patchwork-os 0.2.0-alpha.35 → 0.2.0-alpha.37

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 (207) hide show
  1. package/README.md +70 -15
  2. package/dist/activityLog.d.ts +49 -0
  3. package/dist/activityLog.js +78 -0
  4. package/dist/activityLog.js.map +1 -1
  5. package/dist/approvalHttp.d.ts +25 -0
  6. package/dist/approvalHttp.js +74 -18
  7. package/dist/approvalHttp.js.map +1 -1
  8. package/dist/approvalInsights.d.ts +49 -0
  9. package/dist/approvalInsights.js +97 -0
  10. package/dist/approvalInsights.js.map +1 -0
  11. package/dist/approvalQueue.d.ts +11 -0
  12. package/dist/approvalQueue.js +80 -1
  13. package/dist/approvalQueue.js.map +1 -1
  14. package/dist/approvalSignals.d.ts +124 -0
  15. package/dist/approvalSignals.js +512 -0
  16. package/dist/approvalSignals.js.map +1 -0
  17. package/dist/automation.d.ts +37 -0
  18. package/dist/automation.js +105 -61
  19. package/dist/automation.js.map +1 -1
  20. package/dist/automationSuggestions.d.ts +79 -0
  21. package/dist/automationSuggestions.js +150 -0
  22. package/dist/automationSuggestions.js.map +1 -0
  23. package/dist/bridge.js +46 -0
  24. package/dist/bridge.js.map +1 -1
  25. package/dist/ccPermissions.d.ts +15 -0
  26. package/dist/ccPermissions.js +15 -0
  27. package/dist/ccPermissions.js.map +1 -1
  28. package/dist/claudeDriver.js +74 -16
  29. package/dist/claudeDriver.js.map +1 -1
  30. package/dist/commands/patchworkInit.d.ts +8 -0
  31. package/dist/commands/patchworkInit.js +41 -5
  32. package/dist/commands/patchworkInit.js.map +1 -1
  33. package/dist/commands/recipe.d.ts +20 -0
  34. package/dist/commands/recipe.js +194 -5
  35. package/dist/commands/recipe.js.map +1 -1
  36. package/dist/commands/recipeInstall.js +93 -4
  37. package/dist/commands/recipeInstall.js.map +1 -1
  38. package/dist/commands/tracesExport.d.ts +83 -0
  39. package/dist/commands/tracesExport.js +269 -0
  40. package/dist/commands/tracesExport.js.map +1 -0
  41. package/dist/commands/tracesImport.d.ts +56 -0
  42. package/dist/commands/tracesImport.js +161 -0
  43. package/dist/commands/tracesImport.js.map +1 -0
  44. package/dist/config.d.ts +8 -0
  45. package/dist/config.js +9 -1
  46. package/dist/config.js.map +1 -1
  47. package/dist/connectorRoutes.d.ts +43 -0
  48. package/dist/connectorRoutes.js +1713 -0
  49. package/dist/connectorRoutes.js.map +1 -0
  50. package/dist/connectors/asana.js +6 -7
  51. package/dist/connectors/asana.js.map +1 -1
  52. package/dist/connectors/baseConnector.d.ts +20 -0
  53. package/dist/connectors/baseConnector.js +45 -4
  54. package/dist/connectors/baseConnector.js.map +1 -1
  55. package/dist/connectors/discord.js +6 -7
  56. package/dist/connectors/discord.js.map +1 -1
  57. package/dist/connectors/gmail.js +39 -10
  58. package/dist/connectors/gmail.js.map +1 -1
  59. package/dist/connectors/googleCalendar.js +36 -10
  60. package/dist/connectors/googleCalendar.js.map +1 -1
  61. package/dist/connectors/googleDrive.js +22 -6
  62. package/dist/connectors/googleDrive.js.map +1 -1
  63. package/dist/connectors/linear.js +2 -2
  64. package/dist/connectors/linear.js.map +1 -1
  65. package/dist/connectors/mcpOAuth.js +26 -2
  66. package/dist/connectors/mcpOAuth.js.map +1 -1
  67. package/dist/connectors/oauthStateStore.d.ts +31 -0
  68. package/dist/connectors/oauthStateStore.js +52 -0
  69. package/dist/connectors/oauthStateStore.js.map +1 -0
  70. package/dist/connectors/slack.d.ts +15 -0
  71. package/dist/connectors/slack.js +54 -4
  72. package/dist/connectors/slack.js.map +1 -1
  73. package/dist/connectors/tokenStorage.js +27 -2
  74. package/dist/connectors/tokenStorage.js.map +1 -1
  75. package/dist/connectors/zendesk.js +19 -1
  76. package/dist/connectors/zendesk.js.map +1 -1
  77. package/dist/cors.d.ts +10 -0
  78. package/dist/cors.js +29 -0
  79. package/dist/cors.js.map +1 -0
  80. package/dist/decisionReplay.d.ts +72 -0
  81. package/dist/decisionReplay.js +92 -0
  82. package/dist/decisionReplay.js.map +1 -0
  83. package/dist/decisionTraceLog.d.ts +6 -0
  84. package/dist/decisionTraceLog.js +54 -2
  85. package/dist/decisionTraceLog.js.map +1 -1
  86. package/dist/fp/automationInterpreter.js +25 -21
  87. package/dist/fp/automationInterpreter.js.map +1 -1
  88. package/dist/fp/automationState.js +4 -1
  89. package/dist/fp/automationState.js.map +1 -1
  90. package/dist/fp/policyParser.js +4 -1
  91. package/dist/fp/policyParser.js.map +1 -1
  92. package/dist/inboxRoutes.d.ts +22 -0
  93. package/dist/inboxRoutes.js +114 -0
  94. package/dist/inboxRoutes.js.map +1 -0
  95. package/dist/index.js +479 -17
  96. package/dist/index.js.map +1 -1
  97. package/dist/mcpRoutes.d.ts +37 -0
  98. package/dist/mcpRoutes.js +76 -0
  99. package/dist/mcpRoutes.js.map +1 -0
  100. package/dist/oauth.d.ts +3 -0
  101. package/dist/oauth.js +151 -26
  102. package/dist/oauth.js.map +1 -1
  103. package/dist/oauthRoutes.d.ts +32 -0
  104. package/dist/oauthRoutes.js +124 -0
  105. package/dist/oauthRoutes.js.map +1 -0
  106. package/dist/orchestrator/orchestratorBridge.js +2 -2
  107. package/dist/orchestrator/orchestratorBridge.js.map +1 -1
  108. package/dist/patchworkConfig.d.ts +7 -0
  109. package/dist/patchworkConfig.js.map +1 -1
  110. package/dist/pluginLoader.d.ts +12 -0
  111. package/dist/pluginLoader.js +43 -4
  112. package/dist/pluginLoader.js.map +1 -1
  113. package/dist/pluginWatcher.js +8 -3
  114. package/dist/pluginWatcher.js.map +1 -1
  115. package/dist/preToolUseHook.d.ts +12 -0
  116. package/dist/preToolUseHook.js +23 -0
  117. package/dist/preToolUseHook.js.map +1 -1
  118. package/dist/recipeOrchestration.d.ts +1 -0
  119. package/dist/recipeOrchestration.js +173 -13
  120. package/dist/recipeOrchestration.js.map +1 -1
  121. package/dist/recipeRoutes.d.ts +154 -0
  122. package/dist/recipeRoutes.js +1107 -0
  123. package/dist/recipeRoutes.js.map +1 -0
  124. package/dist/recipes/chainedRunner.d.ts +15 -0
  125. package/dist/recipes/chainedRunner.js +73 -8
  126. package/dist/recipes/chainedRunner.js.map +1 -1
  127. package/dist/recipes/compiler.js +3 -3
  128. package/dist/recipes/compiler.js.map +1 -1
  129. package/dist/recipes/installer.js +3 -3
  130. package/dist/recipes/installer.js.map +1 -1
  131. package/dist/recipes/migrationWarnings.d.ts +12 -0
  132. package/dist/recipes/migrationWarnings.js +44 -0
  133. package/dist/recipes/migrationWarnings.js.map +1 -0
  134. package/dist/recipes/resolveRecipePath.d.ts +69 -0
  135. package/dist/recipes/resolveRecipePath.js +202 -0
  136. package/dist/recipes/resolveRecipePath.js.map +1 -0
  137. package/dist/recipes/tools/file.d.ts +6 -0
  138. package/dist/recipes/tools/file.js +12 -8
  139. package/dist/recipes/tools/file.js.map +1 -1
  140. package/dist/recipes/tools/index.d.ts +2 -0
  141. package/dist/recipes/tools/index.js +2 -0
  142. package/dist/recipes/tools/index.js.map +1 -1
  143. package/dist/recipes/tools/jira.d.ts +14 -0
  144. package/dist/recipes/tools/jira.js +369 -0
  145. package/dist/recipes/tools/jira.js.map +1 -0
  146. package/dist/recipes/tools/linear.js +6 -3
  147. package/dist/recipes/tools/linear.js.map +1 -1
  148. package/dist/recipes/tools/sentry.d.ts +12 -0
  149. package/dist/recipes/tools/sentry.js +73 -0
  150. package/dist/recipes/tools/sentry.js.map +1 -0
  151. package/dist/recipes/tools/slack.js +7 -3
  152. package/dist/recipes/tools/slack.js.map +1 -1
  153. package/dist/recipes/validation.js +83 -14
  154. package/dist/recipes/validation.js.map +1 -1
  155. package/dist/recipes/yamlRunner.d.ts +7 -0
  156. package/dist/recipes/yamlRunner.js +107 -13
  157. package/dist/recipes/yamlRunner.js.map +1 -1
  158. package/dist/recipesHttp.d.ts +44 -1
  159. package/dist/recipesHttp.js +168 -15
  160. package/dist/recipesHttp.js.map +1 -1
  161. package/dist/runLog.d.ts +14 -0
  162. package/dist/runLog.js +88 -4
  163. package/dist/runLog.js.map +1 -1
  164. package/dist/schemas/dry-run-plan.v1.json +139 -0
  165. package/dist/schemas/recipe.v1.json +684 -0
  166. package/dist/server.d.ts +71 -10
  167. package/dist/server.js +363 -1703
  168. package/dist/server.js.map +1 -1
  169. package/dist/ssrfGuard.d.ts +54 -0
  170. package/dist/ssrfGuard.js +122 -0
  171. package/dist/ssrfGuard.js.map +1 -0
  172. package/dist/streamableHttp.d.ts +8 -0
  173. package/dist/streamableHttp.js +112 -21
  174. package/dist/streamableHttp.js.map +1 -1
  175. package/dist/tools/getDocumentSymbols.d.ts +24 -0
  176. package/dist/tools/getDocumentSymbols.js +74 -8
  177. package/dist/tools/getDocumentSymbols.js.map +1 -1
  178. package/dist/tools/getSecurityAdvisories.js +10 -1
  179. package/dist/tools/getSecurityAdvisories.js.map +1 -1
  180. package/dist/tools/getSessionUsage.d.ts +3 -0
  181. package/dist/tools/getSessionUsage.js +3 -0
  182. package/dist/tools/getSessionUsage.js.map +1 -1
  183. package/dist/tools/index.d.ts +8 -0
  184. package/dist/tools/index.js +32 -2
  185. package/dist/tools/index.js.map +1 -1
  186. package/dist/tools/transaction.d.ts +19 -0
  187. package/dist/tools/transaction.js +29 -0
  188. package/dist/tools/transaction.js.map +1 -1
  189. package/dist/traceEncryption.d.ts +46 -0
  190. package/dist/traceEncryption.js +124 -0
  191. package/dist/traceEncryption.js.map +1 -0
  192. package/dist/transport.d.ts +39 -0
  193. package/dist/transport.js +88 -8
  194. package/dist/transport.js.map +1 -1
  195. package/package.json +4 -2
  196. package/templates/policies/README.md +72 -0
  197. package/templates/policies/conservative.json +14 -0
  198. package/templates/policies/developer.json +14 -0
  199. package/templates/policies/headless-ci.json +24 -0
  200. package/templates/policies/personal-assistant.json +15 -0
  201. package/templates/policies/regulated-industry.json +18 -0
  202. package/templates/recipes/webhook/README.md +70 -0
  203. package/templates/recipes/webhook/capture-thought.yaml +26 -0
  204. package/templates/recipes/webhook/customer-escalation.yaml +49 -0
  205. package/templates/recipes/webhook/incident-intake.yaml +46 -0
  206. package/templates/recipes/webhook/meeting-prep.yaml +48 -0
  207. package/templates/recipes/webhook/morning-brief.yaml +57 -0
@@ -0,0 +1,49 @@
1
+ name: customer-escalation
2
+ description: |
3
+ When a customer support tool flags a high-priority ticket, enrich it with
4
+ HubSpot CRM data and ping the right Slack channel with full context. The
5
+ human still decides how to respond — this just shaves the lookup time.
6
+
7
+ Suggested triggers:
8
+ - Intercom webhook (conversation.tagged-priority)
9
+ - Zendesk webhook (ticket priority changed)
10
+ - HelpScout / Front custom rule
11
+ - manual paste from CSAT dashboards via curl
12
+
13
+ Payload conventions:
14
+ customer_email the contact email (required — used for HubSpot lookup)
15
+ ticket_url deep link back to the support tool
16
+ summary short description of what they said
17
+
18
+ Example request:
19
+ curl -X POST http://localhost:3101/hooks/customer-escalation \
20
+ -H 'Content-Type: application/json' \
21
+ -d '{"customer_email":"jane@bigco.com","ticket_url":"https://app.intercom.com/conversations/9876","summary":"Says checkout has been broken for 3 days"}'
22
+
23
+ trigger:
24
+ type: webhook
25
+ path: /customer-escalation
26
+
27
+ steps:
28
+ - tool: hubspot.find_contact
29
+ email: "{{payload.customer_email}}"
30
+ into: contact
31
+ - tool: hubspot.list_recent_deals
32
+ contact_id: "{{contact.id}}"
33
+ max: 3
34
+ into: deals
35
+ - agent:
36
+ prompt: |
37
+ Compose a Slack alert for the customer-success team. Keep it under
38
+ 12 lines. Include: customer name + company, tier (from contact.tier
39
+ if present), recent deal context, what they said, and the ticket
40
+ link. End with a single suggested first move.
41
+
42
+ Contact: {{contact}}
43
+ Deals: {{deals}}
44
+ Summary: {{payload.summary}}
45
+ Ticket: {{payload.ticket_url}}
46
+ into: alert
47
+ - tool: slack.post_message
48
+ channel: "#customer-success"
49
+ text: "{{alert}}"
@@ -0,0 +1,46 @@
1
+ name: incident-intake
2
+ description: |
3
+ Convert any external incident signal into a Linear issue + Slack alert.
4
+ Designed as the catch-all webhook your monitoring stack POSTs to so on-call
5
+ has one place to look.
6
+
7
+ Suggested triggers:
8
+ - PagerDuty webhook
9
+ - Sentry alert webhook
10
+ - Datadog monitor
11
+ - GitHub Actions failure
12
+ - external uptime checker
13
+
14
+ Payload conventions (all optional except `title`):
15
+ title short summary, becomes the Linear issue title
16
+ severity "critical" | "high" | "medium" | "low" (default: "high")
17
+ source "pagerduty" | "sentry" | "datadog" | ...
18
+ url deep link back to the source incident page
19
+ body extra detail (markdown ok)
20
+
21
+ Example request:
22
+ curl -X POST http://localhost:3101/hooks/incident-intake \
23
+ -H 'Content-Type: application/json' \
24
+ -d '{"title":"checkout p99 over 2s","severity":"high","source":"datadog","url":"https://app.datadoghq.com/monitor/123"}'
25
+
26
+ trigger:
27
+ type: webhook
28
+ path: /incident-intake
29
+
30
+ steps:
31
+ - tool: linear.create_issue
32
+ title: "[{{payload.severity}}] {{payload.title}}"
33
+ description: |
34
+ Source: {{payload.source}}
35
+ Link: {{payload.url}}
36
+
37
+ {{payload.body}}
38
+ priority: 1
39
+ into: issue
40
+ - tool: slack.post_message
41
+ channel: "#incidents"
42
+ text: |
43
+ :rotating_light: New incident: *{{payload.title}}*
44
+ Severity: {{payload.severity}}
45
+ Source: {{payload.source}} — {{payload.url}}
46
+ Linear: {{issue.url}}
@@ -0,0 +1,48 @@
1
+ name: meeting-prep
2
+ description: |
3
+ Two minutes before any meeting starts, post a brief on the attendees and
4
+ recent context (recent email threads, related Linear issues, last meeting
5
+ notes). Drops the brief into ~/.patchwork/inbox/ and pings you on Slack.
6
+
7
+ Suggested triggers:
8
+ - Calendar webhook ("notify before event") — most reliable
9
+ - Apple Watch / iOS Shortcut tied to a calendar reminder
10
+ - Home Assistant routine fired by Apple Calendar event start
11
+
12
+ Example request (with attendees + topic in payload):
13
+ curl -X POST http://localhost:3101/hooks/meeting-prep \
14
+ -H 'Content-Type: application/json' \
15
+ -d '{"attendees":["alex@example.com","sam@example.com"],"topic":"Q3 planning"}'
16
+
17
+ trigger:
18
+ type: webhook
19
+ path: /meeting-prep
20
+
21
+ steps:
22
+ - tool: gmail.search_threads
23
+ query: "from:({{payload.attendees}}) newer_than:7d"
24
+ max: 10
25
+ into: recent_threads
26
+ - tool: linear.search_issues
27
+ query: "{{payload.topic}}"
28
+ max: 5
29
+ into: related_issues
30
+ - agent:
31
+ prompt: |
32
+ You are about to walk into a meeting. Produce a 10-line briefing.
33
+
34
+ Topic: {{payload.topic}}
35
+ Attendees: {{payload.attendees}}
36
+ Recent email threads with attendees: {{recent_threads}}
37
+ Related Linear issues: {{related_issues}}
38
+
39
+ Output sections: Context, Open questions, Suggested first move.
40
+ into: brief
41
+ - tool: file.write
42
+ path: ~/.patchwork/inbox/meeting-{{date}}-{{time}}.md
43
+ content: |
44
+ # Meeting prep — {{payload.topic}}
45
+ {{brief}}
46
+
47
+ output:
48
+ path: ~/.patchwork/inbox/meeting-{{date}}-{{time}}.md
@@ -0,0 +1,57 @@
1
+ name: morning-brief-webhook
2
+ description: |
3
+ On-demand morning brief — fires the moment you POST. Pair this with an
4
+ iOS Shortcut on your home screen ("Brief me") so you get the digest
5
+ whenever you're ready, not on a fixed cron schedule.
6
+
7
+ For the scheduled (cron) version, see ../morning-brief.yaml.
8
+
9
+ Suggested triggers:
10
+ - iOS Shortcut on first phone unlock
11
+ - Apple Watch complication tap
12
+ - Home Assistant motion sensor at the kitchen counter
13
+ - Stream Deck "morning routine" macro
14
+
15
+ Example request:
16
+ curl -X POST http://localhost:3101/hooks/morning-brief
17
+
18
+ trigger:
19
+ type: webhook
20
+ path: /morning-brief
21
+
22
+ steps:
23
+ - tool: gmail.fetch_unread
24
+ since: 24h
25
+ max: 30
26
+ into: messages
27
+ - tool: github.list_issues
28
+ assignee: "@me"
29
+ max: 10
30
+ into: issues
31
+ - tool: linear.list_issues
32
+ assignee: "@me"
33
+ state: "started,unstarted"
34
+ max: 15
35
+ into: linear_issues
36
+ - tool: calendar.list_events
37
+ days_ahead: 1
38
+ max: 10
39
+ into: calendar
40
+ - agent:
41
+ prompt: |
42
+ Write a 12-line morning brief from this data, in plain English,
43
+ prioritising what needs attention today.
44
+
45
+ Email (unread, 24h): {{messages}}
46
+ GitHub issues (mine): {{issues}}
47
+ Linear (mine): {{linear_issues}}
48
+ Calendar (next 24h): {{calendar}}
49
+ into: brief
50
+ - tool: file.write
51
+ path: ~/.patchwork/inbox/morning-brief-{{date}}.md
52
+ content: |
53
+ # Morning brief — {{date}}
54
+ {{brief}}
55
+
56
+ output:
57
+ path: ~/.patchwork/inbox/morning-brief-{{date}}.md