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
@@ -13,7 +13,26 @@ export interface ToolEntry {
13
13
  description: string;
14
14
  categories: string[];
15
15
  }
16
- /** Build the full tool catalog from TOOL_CATEGORIES + TOOL_DESCRIPTIONS. */
16
+ /**
17
+ * Enumerate every registered tool name by scanning the tool modules on disk.
18
+ *
19
+ * This is the registry-of-truth: it scans the actual `dist/tools/*.js` (or
20
+ * `src/tools/*.ts` in dev) modules that `registerAllTools` loads, so the
21
+ * count and catalog cannot drift from the hand-maintained `TOOL_CATEGORIES` /
22
+ * `TOOL_DESCRIPTIONS` metadata maps. Returns `null` if the tool directory
23
+ * cannot be located (e.g. an unusual install layout) so callers can fall
24
+ * back to the metadata maps.
25
+ */
26
+ export declare function discoverRegisteredToolNames(): Set<string> | null;
27
+ /**
28
+ * Build the full tool catalog.
29
+ *
30
+ * The set of tools is derived from the actual registered tool modules
31
+ * (`discoverRegisteredToolNames`) so the printed count never drifts. The
32
+ * `TOOL_CATEGORIES` / `TOOL_DESCRIPTIONS` maps supply categories and
33
+ * human-readable descriptions as metadata overlays. If module discovery
34
+ * fails, falls back to the union of the two metadata maps.
35
+ */
17
36
  export declare function buildToolCatalog(): ToolEntry[];
18
37
  /**
19
38
  * Search the tool catalog.
@@ -7,6 +7,9 @@
7
7
  *
8
8
  * No bridge connection required — reads static registry at import time.
9
9
  */
10
+ import { readdirSync, readFileSync } from "node:fs";
11
+ import path from "node:path";
12
+ import { fileURLToPath } from "node:url";
10
13
  import { TOOL_CATEGORIES } from "../tools/index.js";
11
14
  // ---------------------------------------------------------------------------
12
15
  // Static description map for the most important tools.
@@ -169,10 +172,117 @@ export const TOOL_DESCRIPTIONS = {
169
172
  getPlan: "Get the details of a plan.",
170
173
  listPlans: "List all active plans in the workspace.",
171
174
  };
172
- /** Build the full tool catalog from TOOL_CATEGORIES + TOOL_DESCRIPTIONS. */
175
+ /**
176
+ * Scan a single tool module source for every `schema: { ... name: "x" ... }`
177
+ * block and return the tool names it registers. Works on both compiled JS
178
+ * (shipped in dist/) and TypeScript source — the schema object literal shape
179
+ * is identical after compilation.
180
+ *
181
+ * Ported from scripts/audit-lsp-tools.mjs so the CLI catalog is derived from
182
+ * the same registry-of-truth the audit gate enforces.
183
+ */
184
+ function extractToolNamesFromModule(src) {
185
+ const out = [];
186
+ let i = 0;
187
+ while (i < src.length) {
188
+ const schemaIdx = src.indexOf("schema: {", i);
189
+ if (schemaIdx === -1)
190
+ break;
191
+ let depth = 0;
192
+ let blockStart = -1;
193
+ for (let j = schemaIdx + 8; j < src.length; j++) {
194
+ if (src[j] === "{") {
195
+ depth++;
196
+ if (depth === 1)
197
+ blockStart = j;
198
+ }
199
+ else if (src[j] === "}") {
200
+ if (depth === 1) {
201
+ const block = src.slice(blockStart, j + 1);
202
+ const m = block.match(/\bname:\s*"([a-zA-Z][a-zA-Z0-9_]+)"/);
203
+ if (m?.[1])
204
+ out.push(m[1]);
205
+ break;
206
+ }
207
+ depth--;
208
+ }
209
+ }
210
+ i = schemaIdx + 9;
211
+ }
212
+ return out;
213
+ }
214
+ /**
215
+ * Enumerate every registered tool name by scanning the tool modules on disk.
216
+ *
217
+ * This is the registry-of-truth: it scans the actual `dist/tools/*.js` (or
218
+ * `src/tools/*.ts` in dev) modules that `registerAllTools` loads, so the
219
+ * count and catalog cannot drift from the hand-maintained `TOOL_CATEGORIES` /
220
+ * `TOOL_DESCRIPTIONS` metadata maps. Returns `null` if the tool directory
221
+ * cannot be located (e.g. an unusual install layout) so callers can fall
222
+ * back to the metadata maps.
223
+ */
224
+ export function discoverRegisteredToolNames() {
225
+ const here = path.dirname(fileURLToPath(import.meta.url));
226
+ // Compiled: dist/commands/tools.js → dist/tools. Dev (tsx): src/commands → src/tools.
227
+ const candidates = [
228
+ path.resolve(here, "..", "tools"),
229
+ path.resolve(here, "..", "..", "src", "tools"),
230
+ ];
231
+ for (const dir of candidates) {
232
+ let files;
233
+ try {
234
+ files = readdirSync(dir);
235
+ }
236
+ catch {
237
+ continue;
238
+ }
239
+ const mods = files.filter((f) => (f.endsWith(".js") || f.endsWith(".ts")) &&
240
+ !f.endsWith(".d.ts") &&
241
+ !f.endsWith(".map"));
242
+ if (mods.length === 0)
243
+ continue;
244
+ const names = new Set();
245
+ for (const f of mods) {
246
+ let src;
247
+ try {
248
+ src = readFileSync(path.join(dir, f), "utf8");
249
+ }
250
+ catch {
251
+ continue;
252
+ }
253
+ for (const n of extractToolNamesFromModule(src))
254
+ names.add(n);
255
+ }
256
+ if (names.size > 0)
257
+ return names;
258
+ }
259
+ return null;
260
+ }
261
+ /**
262
+ * Build the full tool catalog.
263
+ *
264
+ * The set of tools is derived from the actual registered tool modules
265
+ * (`discoverRegisteredToolNames`) so the printed count never drifts. The
266
+ * `TOOL_CATEGORIES` / `TOOL_DESCRIPTIONS` maps supply categories and
267
+ * human-readable descriptions as metadata overlays. If module discovery
268
+ * fails, falls back to the union of the two metadata maps.
269
+ */
173
270
  export function buildToolCatalog() {
174
- const seen = new Set();
271
+ const registered = discoverRegisteredToolNames();
175
272
  const entries = [];
273
+ if (registered) {
274
+ for (const name of registered) {
275
+ entries.push({
276
+ name,
277
+ description: TOOL_DESCRIPTIONS[name] ?? "",
278
+ categories: TOOL_CATEGORIES[name] ?? [],
279
+ });
280
+ }
281
+ return entries.sort((a, b) => a.name.localeCompare(b.name));
282
+ }
283
+ // Fallback: union of the metadata maps (drift-prone, used only when the
284
+ // tool modules can't be located on disk).
285
+ const seen = new Set();
176
286
  for (const [name, cats] of Object.entries(TOOL_CATEGORIES)) {
177
287
  seen.add(name);
178
288
  entries.push({
@@ -181,7 +291,6 @@ export function buildToolCatalog() {
181
291
  categories: cats,
182
292
  });
183
293
  }
184
- // Also include tools in the description map that have no category entry.
185
294
  for (const [name, desc] of Object.entries(TOOL_DESCRIPTIONS)) {
186
295
  if (!seen.has(name)) {
187
296
  entries.push({ name, description: desc, categories: [] });
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Bridge → push relay dispatch for recipe halt events.
3
+ *
4
+ * Sibling of `dispatchPushNotification` in [src/approvalHttp.ts](./approvalHttp.ts).
5
+ * The bridge POSTs a halt payload to `${pushServiceUrl}/halt`; the relay
6
+ * (a hosted push service or the dashboard's `/api/relay/halt` route)
7
+ * fans it out to every subscribed browser via Web Push.
8
+ *
9
+ * SSRF guard mirrors the approval dispatcher: HTTPS-only, hostname
10
+ * blocklist (localhost / loopback / private IPs after DNS resolve),
11
+ * 5s abort timeout, fire-and-forget so the recipe runner is never
12
+ * blocked on a push relay outage.
13
+ *
14
+ * Wired via `wireHaltPushDispatch` (subscribes to ActivityLog) — keeps
15
+ * the runner itself ignorant of push transport.
16
+ */
17
+ export interface HaltPushPayload {
18
+ recipeName: string;
19
+ runSeq: number;
20
+ /** Always "error" or "halted" — the runner emits "error" today; the
21
+ * shape leaves room for the dashboard's halted/error distinction. */
22
+ status: "error" | "halted";
23
+ haltReason?: string;
24
+ haltCategory?: string;
25
+ stepId?: string;
26
+ errorMessage?: string;
27
+ occurredAt?: number;
28
+ }
29
+ /**
30
+ * Fire-and-forget dispatch. Never throws — caller cannot recover from a
31
+ * push relay outage. Logged via console.warn for ops visibility.
32
+ */
33
+ export declare function dispatchHaltPushNotification(pushServiceUrl: string, pushServiceToken: string, payload: HaltPushPayload): Promise<void>;
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Bridge → push relay dispatch for recipe halt events.
3
+ *
4
+ * Sibling of `dispatchPushNotification` in [src/approvalHttp.ts](./approvalHttp.ts).
5
+ * The bridge POSTs a halt payload to `${pushServiceUrl}/halt`; the relay
6
+ * (a hosted push service or the dashboard's `/api/relay/halt` route)
7
+ * fans it out to every subscribed browser via Web Push.
8
+ *
9
+ * SSRF guard mirrors the approval dispatcher: HTTPS-only, hostname
10
+ * blocklist (localhost / loopback / private IPs after DNS resolve),
11
+ * 5s abort timeout, fire-and-forget so the recipe runner is never
12
+ * blocked on a push relay outage.
13
+ *
14
+ * Wired via `wireHaltPushDispatch` (subscribes to ActivityLog) — keeps
15
+ * the runner itself ignorant of push transport.
16
+ */
17
+ import dns from "node:dns/promises";
18
+ /**
19
+ * Same SSRF blocklist as `dispatchPushNotification` in approvalHttp.ts.
20
+ * Duplicated inline to keep this dispatcher self-contained (the
21
+ * approvalHttp version is module-private and the file is already
22
+ * dense). If a third dispatcher ever lands, extract to a shared
23
+ * `src/sanitizeIp.ts`.
24
+ */
25
+ function isBlockedIp(ip) {
26
+ if (ip === "::1" || ip === "0:0:0:0:0:0:0:1")
27
+ return true;
28
+ const parts = ip.split(".").map(Number);
29
+ if (parts.length !== 4)
30
+ return false;
31
+ const [a, b] = parts;
32
+ if (a === 127)
33
+ return true;
34
+ if (a === 10)
35
+ return true;
36
+ if (a === 172 && b >= 16 && b <= 31)
37
+ return true;
38
+ if (a === 192 && b === 168)
39
+ return true;
40
+ if (a === 169 && b === 254)
41
+ return true;
42
+ return false;
43
+ }
44
+ /**
45
+ * Fire-and-forget dispatch. Never throws — caller cannot recover from a
46
+ * push relay outage. Logged via console.warn for ops visibility.
47
+ */
48
+ export async function dispatchHaltPushNotification(pushServiceUrl, pushServiceToken, payload) {
49
+ if (!pushServiceUrl.startsWith("https://")) {
50
+ console.warn(`[halt-push] Rejected non-HTTPS push service URL`);
51
+ return;
52
+ }
53
+ let hostname;
54
+ try {
55
+ hostname = new URL(pushServiceUrl).hostname;
56
+ }
57
+ catch {
58
+ console.warn(`[halt-push] Malformed push service URL — skipping`);
59
+ return;
60
+ }
61
+ if (hostname === "localhost") {
62
+ console.warn(`[halt-push] Blocked loopback push service hostname`);
63
+ return;
64
+ }
65
+ try {
66
+ const resolved = await dns.lookup(hostname);
67
+ if (isBlockedIp(resolved.address)) {
68
+ console.warn(`[halt-push] Blocked private/loopback IP for push service: ${resolved.address}`);
69
+ return;
70
+ }
71
+ }
72
+ catch (err) {
73
+ console.warn(`[halt-push] DNS resolution failed for ${hostname}: ${err instanceof Error ? err.message : String(err)}`);
74
+ return;
75
+ }
76
+ const controller = new AbortController();
77
+ const timer = setTimeout(() => controller.abort(), 5_000);
78
+ try {
79
+ const res = await fetch(`${pushServiceUrl}/halt`, {
80
+ method: "POST",
81
+ headers: {
82
+ "Content-Type": "application/json",
83
+ Authorization: `Bearer ${pushServiceToken}`,
84
+ },
85
+ body: JSON.stringify(payload),
86
+ signal: controller.signal,
87
+ });
88
+ if (!res.ok) {
89
+ // 404 is informational ("no subscribers yet") — same relay
90
+ // contract as the approval path. Anything else is worth a warn.
91
+ if (res.status !== 404) {
92
+ console.warn(`[halt-push] Non-2xx from push relay: ${res.status} ${res.statusText}`);
93
+ }
94
+ }
95
+ }
96
+ catch (err) {
97
+ console.warn(`[halt-push] Dispatch failed: ${err instanceof Error ? err.message : String(err)}`);
98
+ }
99
+ finally {
100
+ clearTimeout(timer);
101
+ }
102
+ }
103
+ //# sourceMappingURL=haltPushDispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"haltPushDispatch.js","sourceRoot":"","sources":["../src/haltPushDispatch.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,28 @@
14
14
  * preserved verbatim from the original.
15
15
  */
16
16
  import type { IncomingMessage, ServerResponse } from "node:http";
17
+ /**
18
+ * Phase 0β provenance shape. Optional + additive — files without
19
+ * frontmatter return `provenance: undefined`.
20
+ */
21
+ export interface InboxProvenance {
22
+ recipe?: string;
23
+ runSeq?: number;
24
+ trigger?: string;
25
+ deliveredAt?: string;
26
+ }
27
+ /**
28
+ * Split a markdown file into its YAML-frontmatter block (parsed as a flat
29
+ * `key: value` map) and the remaining body. Frontmatter is recognised
30
+ * only when the file begins with `---\n` and a closing `---` line is
31
+ * found within the first 30 lines (cap to bound the scan). Returns
32
+ * `{ provenance: undefined, body: content }` for files without
33
+ * frontmatter so callers degrade gracefully on legacy inbox items.
34
+ */
35
+ export declare function parseInboxFile(content: string): {
36
+ provenance: InboxProvenance | undefined;
37
+ body: string;
38
+ };
17
39
  /**
18
40
  * Try to handle an `/inbox` or `/inbox/<filename>.md` route. Returns true
19
41
  * if the route was dispatched (caller should `return` from the request
@@ -17,6 +17,55 @@ import { existsSync } from "node:fs";
17
17
  import os from "node:os";
18
18
  import path from "node:path";
19
19
  import { respond500 } from "./httpErrorResponse.js";
20
+ /**
21
+ * Split a markdown file into its YAML-frontmatter block (parsed as a flat
22
+ * `key: value` map) and the remaining body. Frontmatter is recognised
23
+ * only when the file begins with `---\n` and a closing `---` line is
24
+ * found within the first 30 lines (cap to bound the scan). Returns
25
+ * `{ provenance: undefined, body: content }` for files without
26
+ * frontmatter so callers degrade gracefully on legacy inbox items.
27
+ */
28
+ export function parseInboxFile(content) {
29
+ if (!content.startsWith("---\n")) {
30
+ return { provenance: undefined, body: content };
31
+ }
32
+ const lines = content.split("\n");
33
+ // lines[0] === "---". Find the next "---" delimiter.
34
+ let endIdx = -1;
35
+ const maxScan = Math.min(lines.length, 30);
36
+ for (let i = 1; i < maxScan; i++) {
37
+ if (lines[i] === "---") {
38
+ endIdx = i;
39
+ break;
40
+ }
41
+ }
42
+ if (endIdx === -1) {
43
+ // Malformed — no closing delimiter. Treat as body-only.
44
+ return { provenance: undefined, body: content };
45
+ }
46
+ const fm = {};
47
+ for (let i = 1; i < endIdx; i++) {
48
+ const line = lines[i] ?? "";
49
+ const m = /^([a-zA-Z][a-zA-Z0-9_]*):\s*(.*)$/.exec(line);
50
+ if (!m)
51
+ continue;
52
+ const key = m[1];
53
+ const rawVal = (m[2] ?? "").trim();
54
+ if (key === "runSeq") {
55
+ const n = Number.parseInt(rawVal, 10);
56
+ if (Number.isFinite(n))
57
+ fm.runSeq = n;
58
+ }
59
+ else if (key === "recipe" || key === "trigger" || key === "deliveredAt") {
60
+ fm[key] = rawVal;
61
+ }
62
+ }
63
+ const body = lines.slice(endIdx + 1).join("\n");
64
+ // Strip a single leading blank line if present (frontmatter writers
65
+ // emit a trailing blank line by convention).
66
+ const trimmedBody = body.startsWith("\n") ? body.slice(1) : body;
67
+ return { provenance: fm, body: trimmedBody };
68
+ }
20
69
  /**
21
70
  * Filename guard shared by every inbox sub-route. Rejects directory
22
71
  * separators and `..` segments so the request can never escape the inbox
@@ -57,7 +106,15 @@ export function tryHandleInboxRoute(req, res, parsedUrl) {
57
106
  readFile(filePath, "utf8"),
58
107
  stat(filePath),
59
108
  ]);
60
- const stripped = content
109
+ // Phase — consume frontmatter FIRST, then strip
110
+ // heading-`#` lines from the body only. Previously the
111
+ // `#`-strip ran over the whole file, which meant any
112
+ // pre-existing `#`-prefixed body line was eaten AND, more
113
+ // subtly, frontmatter values (lines like `recipe: x`,
114
+ // `---`) leaked into the preview because they weren't
115
+ // `#`-prefixed. Splitting the two passes fixes both.
116
+ const { provenance, body } = parseInboxFile(content);
117
+ const stripped = body
61
118
  .split("\n")
62
119
  .filter((l) => !l.startsWith("#"))
63
120
  .join("\n")
@@ -72,6 +129,7 @@ export function tryHandleInboxRoute(req, res, parsedUrl) {
72
129
  name,
73
130
  modifiedAt: stats.mtime.toISOString(),
74
131
  preview: stripped.slice(0, 200),
132
+ ...(provenance && { provenance }),
75
133
  };
76
134
  }));
77
135
  items.sort((a, b) => new Date(b.modifiedAt).getTime() - new Date(a.modifiedAt).getTime());
@@ -101,10 +159,12 @@ export function tryHandleInboxRoute(req, res, parsedUrl) {
101
159
  stat(filePath),
102
160
  ]);
103
161
  res.writeHead(200, { "Content-Type": "application/json" });
162
+ const { provenance } = parseInboxFile(content);
104
163
  res.end(JSON.stringify({
105
164
  name: filename,
106
165
  content,
107
166
  modifiedAt: stats.mtime.toISOString(),
167
+ ...(provenance && { provenance }),
108
168
  }));
109
169
  }
110
170
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"inboxRoutes.js","sourceRoot":"","sources":["../src/inboxRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inboxRoutes.js","sourceRoot":"","sources":["../src/inboxRoutes.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -192,9 +192,17 @@ if (process.argv[2] === "--help" ||
192
192
  ` recipe run <name> [--vars k=v] Run a recipe by name\n` +
193
193
  ` recipe install <source> Install from a path or GitHub source\n` +
194
194
  ` recipe --help Full recipe subcommand index\n\n` +
195
+ `Operate\n` +
196
+ ` start [--port N] [--workspace <dir>] Start a single bridge (no tmux)\n` +
197
+ ` status One-line bridge status (port, uptime)\n` +
198
+ ` tools [list|search <q>] [--slim] [--json] List tools the bridge would register\n` +
199
+ ` analytics <show|configure|clear|test> Manage opt-in telemetry config\n` +
200
+ ` launchd <install|uninstall|status> Manage the macOS auto-start LaunchAgent\n\n` +
195
201
  `Diagnose\n` +
196
202
  ` halts [--window 1h|24h|overnight|7d] Morning summary of recent recipe halts\n` +
197
203
  ` judgments [--window ...] [--recipe N] Recent judge-step verdicts across runs\n` +
204
+ ` suggest [--since-days N] Recipe + unused-tool suggestions\n` +
205
+ ` token-efficiency benchmark Measure token cost across tool sets\n` +
198
206
  ` traces export Bundle approval / recipe / decision traces\n` +
199
207
  ` print-token [--port N] Print the active bridge auth token\n\n` +
200
208
  `Safety\n` +