patchwork-os 0.2.0-beta.5.canary.95 → 0.2.0-beta.6

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 (139) hide show
  1. package/dist/ajv2020.d.ts +25 -0
  2. package/dist/ajv2020.js +33 -0
  3. package/dist/ajv2020.js.map +1 -0
  4. package/dist/approvalQueue.d.ts +17 -0
  5. package/dist/approvalQueue.js.map +1 -1
  6. package/dist/bridge.js +16 -0
  7. package/dist/bridge.js.map +1 -1
  8. package/dist/commands/recipeInstall.js +5 -1
  9. package/dist/commands/recipeInstall.js.map +1 -1
  10. package/dist/commands/tools.d.ts +20 -1
  11. package/dist/commands/tools.js +112 -3
  12. package/dist/commands/tools.js.map +1 -1
  13. package/dist/haltPushDispatch.d.ts +33 -0
  14. package/dist/haltPushDispatch.js +103 -0
  15. package/dist/haltPushDispatch.js.map +1 -0
  16. package/dist/inboxRoutes.d.ts +22 -0
  17. package/dist/inboxRoutes.js +61 -1
  18. package/dist/inboxRoutes.js.map +1 -1
  19. package/dist/index.js +8 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/oauthRoutes.d.ts +1 -1
  22. package/dist/oauthRoutes.js +2 -2
  23. package/dist/recipeRoutes.js +133 -65
  24. package/dist/recipeRoutes.js.map +1 -1
  25. package/dist/recipes/githubInstallSource.d.ts +66 -0
  26. package/dist/recipes/githubInstallSource.js +85 -4
  27. package/dist/recipes/githubInstallSource.js.map +1 -1
  28. package/dist/recipes/haltCategory.d.ts +4 -0
  29. package/dist/recipes/haltCategory.js +6 -0
  30. package/dist/recipes/haltCategory.js.map +1 -1
  31. package/dist/recipes/names.d.ts +20 -0
  32. package/dist/recipes/names.js +25 -0
  33. package/dist/recipes/names.js.map +1 -1
  34. package/dist/recipes/parser.js +7 -2
  35. package/dist/recipes/parser.js.map +1 -1
  36. package/dist/recipes/stepObservation.js +9 -0
  37. package/dist/recipes/stepObservation.js.map +1 -1
  38. package/dist/recipes/tools/fanOut.d.ts +20 -0
  39. package/dist/recipes/tools/fanOut.js +199 -0
  40. package/dist/recipes/tools/fanOut.js.map +1 -0
  41. package/dist/recipes/tools/index.d.ts +1 -0
  42. package/dist/recipes/tools/index.js +1 -0
  43. package/dist/recipes/tools/index.js.map +1 -1
  44. package/dist/recipes/tools/slack.js +1 -1
  45. package/dist/recipes/validation.js +2 -2
  46. package/dist/recipes/validation.js.map +1 -1
  47. package/dist/recipes/workspaceRoot.d.ts +37 -0
  48. package/dist/recipes/workspaceRoot.js +73 -0
  49. package/dist/recipes/workspaceRoot.js.map +1 -0
  50. package/dist/recipes/yamlRunner.d.ts +72 -0
  51. package/dist/recipes/yamlRunner.js +621 -295
  52. package/dist/recipes/yamlRunner.js.map +1 -1
  53. package/dist/runLog.d.ts +22 -0
  54. package/dist/runLog.js +12 -1
  55. package/dist/runLog.js.map +1 -1
  56. package/dist/server.d.ts +14 -0
  57. package/dist/server.js +36 -3
  58. package/dist/server.js.map +1 -1
  59. package/dist/tools/batchLsp.d.ts +3 -0
  60. package/dist/tools/cancelClaudeTask.d.ts +1 -0
  61. package/dist/tools/clipboard.d.ts +2 -0
  62. package/dist/tools/closeTabs.d.ts +1 -0
  63. package/dist/tools/codeLens.d.ts +1 -0
  64. package/dist/tools/createIssueFromAIComment.d.ts +1 -0
  65. package/dist/tools/ctxSaveTrace.d.ts +1 -0
  66. package/dist/tools/debug.d.ts +4 -0
  67. package/dist/tools/decorations.d.ts +2 -0
  68. package/dist/tools/documentLinks.d.ts +1 -0
  69. package/dist/tools/editText.d.ts +1 -0
  70. package/dist/tools/enrichCommit.d.ts +1 -0
  71. package/dist/tools/explainDiagnostic.d.ts +1 -0
  72. package/dist/tools/explainSymbol.d.ts +1 -0
  73. package/dist/tools/fileOperations.d.ts +3 -0
  74. package/dist/tools/fileWatcher.d.ts +2 -0
  75. package/dist/tools/findFiles.d.ts +1 -0
  76. package/dist/tools/fixAllLintErrors.d.ts +1 -0
  77. package/dist/tools/foldingRanges.d.ts +1 -0
  78. package/dist/tools/formatDocument.d.ts +1 -0
  79. package/dist/tools/generateTests.d.ts +1 -0
  80. package/dist/tools/getAIComments.d.ts +1 -0
  81. package/dist/tools/getBufferContent.d.ts +1 -0
  82. package/dist/tools/getChangeImpact.d.ts +1 -0
  83. package/dist/tools/getClaudeTaskStatus.d.ts +1 -0
  84. package/dist/tools/getCodeCoverage.d.ts +1 -0
  85. package/dist/tools/getCommitsForIssue.d.ts +1 -0
  86. package/dist/tools/getDebugState.d.ts +1 -0
  87. package/dist/tools/getDocumentSymbols.d.ts +1 -0
  88. package/dist/tools/getGitHotspots.d.ts +1 -0
  89. package/dist/tools/getImportedSignatures.d.ts +1 -0
  90. package/dist/tools/getPRTemplate.d.ts +1 -0
  91. package/dist/tools/getSymbolHistory.d.ts +1 -0
  92. package/dist/tools/getTypeSignature.d.ts +1 -0
  93. package/dist/tools/getWorkspaceSettings.d.ts +1 -0
  94. package/dist/tools/gitWrite.d.ts +11 -0
  95. package/dist/tools/github/actions.d.ts +2 -0
  96. package/dist/tools/github/composite.d.ts +3 -0
  97. package/dist/tools/github/issues.d.ts +4 -0
  98. package/dist/tools/github/pr.d.ts +7 -0
  99. package/dist/tools/handoffNote.d.ts +1 -0
  100. package/dist/tools/hoverAtCursor.d.ts +1 -0
  101. package/dist/tools/httpClient.d.ts +2 -0
  102. package/dist/tools/inlayHints.d.ts +1 -0
  103. package/dist/tools/launchQuickTask.d.ts +1 -0
  104. package/dist/tools/listClaudeTasks.d.ts +1 -0
  105. package/dist/tools/listTerminals.d.ts +1 -0
  106. package/dist/tools/lsp.d.ts +15 -0
  107. package/dist/tools/navigateToSymbolByName.d.ts +1 -0
  108. package/dist/tools/openDiff.d.ts +1 -0
  109. package/dist/tools/openFile.d.ts +1 -0
  110. package/dist/tools/organizeImports.d.ts +1 -0
  111. package/dist/tools/planPersistence.d.ts +3 -0
  112. package/dist/tools/previewEdit.d.ts +1 -0
  113. package/dist/tools/refactorAnalyze.d.ts +1 -0
  114. package/dist/tools/refactorPreview.d.ts +1 -0
  115. package/dist/tools/replaceBlock.d.ts +1 -0
  116. package/dist/tools/resumeClaudeTask.d.ts +1 -0
  117. package/dist/tools/runClaudeTask.d.ts +1 -0
  118. package/dist/tools/screenshot.d.ts +1 -0
  119. package/dist/tools/searchAndReplace.d.ts +1 -0
  120. package/dist/tools/searchWorkspace.d.ts +1 -0
  121. package/dist/tools/selectionRanges.d.ts +1 -0
  122. package/dist/tools/semanticTokens.d.ts +1 -0
  123. package/dist/tools/signatureHelp.d.ts +1 -0
  124. package/dist/tools/terminal.d.ts +6 -0
  125. package/dist/tools/testTraceToSource.d.ts +1 -0
  126. package/dist/tools/transaction.d.ts +4 -0
  127. package/dist/tools/typeHierarchy.d.ts +1 -0
  128. package/dist/tools/utils.d.ts +18 -0
  129. package/dist/tools/utils.js +28 -6
  130. package/dist/tools/utils.js.map +1 -1
  131. package/dist/tools/vscodeCommands.d.ts +2 -0
  132. package/dist/tools/vscodeTasks.d.ts +2 -0
  133. package/dist/tools/workspaceSettings.d.ts +1 -0
  134. package/dist/transport.js +2 -2
  135. package/dist/transport.js.map +1 -1
  136. package/dist/wireHaltPushDispatch.d.ts +38 -0
  137. package/dist/wireHaltPushDispatch.js +71 -0
  138. package/dist/wireHaltPushDispatch.js.map +1 -0
  139. package/package.json +1 -1
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Subscribe to ActivityLog and dispatch a Web Push notification
3
+ * whenever a recipe run completes with status=error.
4
+ *
5
+ * Lives outside the recipe runner so the runner stays push-agnostic
6
+ * (`yamlRunner.ts` already emits `recipe_done` lifecycle events —
7
+ * we just listen). Pushes are fire-and-forget; runner is never
8
+ * blocked or affected by a relay outage.
9
+ *
10
+ * Reads `pushServiceUrl` / `pushServiceToken` from a getter callback
11
+ * (not a captured value) so config edits through `/settings` take
12
+ * effect immediately without a bridge restart.
13
+ *
14
+ * Dedup: a run that is retried / resumed can emit `recipe_done` more
15
+ * than once. A short-window per-runSeq guard collapses those into a
16
+ * single push so a flapping run can't spam every subscribed device.
17
+ */
18
+ import { dispatchHaltPushNotification } from "./haltPushDispatch.js";
19
+ const DEFAULT_DEDUP_WINDOW_MS = 60_000;
20
+ export function wireHaltPushDispatch(deps) {
21
+ const dedupWindowMs = deps.dedupWindowMs ?? DEFAULT_DEDUP_WINDOW_MS;
22
+ const now = deps.now ?? Date.now;
23
+ // runSeq → last-dispatched epoch ms. Pruned opportunistically on
24
+ // each event so the Map can't grow unbounded on a long-lived bridge.
25
+ const lastDispatched = new Map();
26
+ function prune(cutoff) {
27
+ for (const [seq, at] of lastDispatched) {
28
+ if (at < cutoff)
29
+ lastDispatched.delete(seq);
30
+ }
31
+ }
32
+ return deps.activityLog.subscribe((kind, entry) => {
33
+ if (kind !== "lifecycle")
34
+ return;
35
+ const lifecycle = entry;
36
+ if (lifecycle.event !== "recipe_done")
37
+ return;
38
+ const md = lifecycle.metadata ?? {};
39
+ if (md.status !== "error")
40
+ return;
41
+ const cfg = deps.getPushConfig();
42
+ if (!cfg)
43
+ return;
44
+ const recipeName = typeof md.recipeName === "string" ? md.recipeName : "recipe";
45
+ const runSeq = typeof md.runSeq === "number" ? md.runSeq : 0;
46
+ const errorMessage = typeof md.errorMessage === "string" ? md.errorMessage : undefined;
47
+ // Dedup: skip if this runSeq fired a push within the window.
48
+ // runSeq 0 is the "unknown" sentinel — never dedup it, since two
49
+ // genuinely distinct unknown-seq runs would otherwise collide.
50
+ const at = now();
51
+ prune(at - dedupWindowMs);
52
+ if (runSeq !== 0) {
53
+ const last = lastDispatched.get(runSeq);
54
+ if (last !== undefined && at - last < dedupWindowMs)
55
+ return;
56
+ lastDispatched.set(runSeq, at);
57
+ }
58
+ // Best-effort: dispatchHaltPushNotification swallows errors, but
59
+ // a synchronously-thrown URL parse error would still surface here.
60
+ dispatchHaltPushNotification(cfg.url, cfg.token, {
61
+ recipeName,
62
+ runSeq,
63
+ status: "error",
64
+ errorMessage,
65
+ occurredAt: at,
66
+ }).catch((err) => {
67
+ deps.logger?.warn?.(`[halt-push] unexpected dispatcher error: ${err instanceof Error ? err.message : String(err)}`);
68
+ });
69
+ });
70
+ }
71
+ //# sourceMappingURL=wireHaltPushDispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wireHaltPushDispatch.js","sourceRoot":"","sources":["../src/wireHaltPushDispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAgBrE,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAEvC,MAAM,UAAU,oBAAoB,CAClC,IAA8B;IAE9B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,uBAAuB,CAAC;IACpE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACjC,iEAAiE;IACjE,qEAAqE;IACrE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEjD,SAAS,KAAK,CAAC,MAAc;QAC3B,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,cAAc,EAAE,CAAC;YACvC,IAAI,EAAE,GAAG,MAAM;gBAAE,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAChD,IAAI,IAAI,KAAK,WAAW;YAAE,OAAO;QACjC,MAAM,SAAS,GAAG,KAGjB,CAAC;QACF,IAAI,SAAS,CAAC,KAAK,KAAK,aAAa;YAAE,OAAO;QAC9C,MAAM,EAAE,GAAG,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;QACpC,IAAI,EAAE,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO;QAElC,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,MAAM,UAAU,GACd,OAAO,EAAE,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/D,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,YAAY,GAChB,OAAO,EAAE,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpE,6DAA6D;QAC7D,iEAAiE;QACjE,+DAA+D;QAC/D,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;QACjB,KAAK,CAAC,EAAE,GAAG,aAAa,CAAC,CAAC;QAC1B,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,GAAG,IAAI,GAAG,aAAa;gBAAE,OAAO;YAC5D,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACjC,CAAC;QAED,iEAAiE;QACjE,mEAAmE;QACnE,4BAA4B,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE;YAC/C,UAAU;YACV,MAAM;YACN,MAAM,EAAE,OAAO;YACf,YAAY;YACZ,UAAU,EAAE,EAAE;SACf,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACf,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CACjB,4CAA4C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC/F,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "patchwork-os",
3
- "version": "0.2.0-beta.5.canary.95",
3
+ "version": "0.2.0-beta.6",
4
4
  "description": "Your personal AI runtime, local-first. Patchwork OS gives any AI model a consistent set of tools, YAML recipes, a delegation policy with approval queue, and a durable trace memory — all on your machine, all under your policy.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",