youmd 0.6.21 → 0.6.27

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 (218) hide show
  1. package/dist/commands/build.d.ts.map +1 -1
  2. package/dist/commands/build.js +0 -1
  3. package/dist/commands/build.js.map +1 -1
  4. package/dist/commands/chat.d.ts.map +1 -1
  5. package/dist/commands/chat.js +283 -184
  6. package/dist/commands/chat.js.map +1 -1
  7. package/dist/commands/export.d.ts +1 -0
  8. package/dist/commands/export.d.ts.map +1 -1
  9. package/dist/commands/export.js +5 -0
  10. package/dist/commands/export.js.map +1 -1
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +21 -1
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/keys.d.ts.map +1 -1
  15. package/dist/commands/keys.js +3 -3
  16. package/dist/commands/keys.js.map +1 -1
  17. package/dist/commands/link.d.ts.map +1 -1
  18. package/dist/commands/link.js +3 -3
  19. package/dist/commands/link.js.map +1 -1
  20. package/dist/commands/login.d.ts +29 -0
  21. package/dist/commands/login.d.ts.map +1 -1
  22. package/dist/commands/login.js +256 -127
  23. package/dist/commands/login.js.map +1 -1
  24. package/dist/commands/logs.js +0 -1
  25. package/dist/commands/logs.js.map +1 -1
  26. package/dist/commands/mcp.d.ts +14 -0
  27. package/dist/commands/mcp.d.ts.map +1 -1
  28. package/dist/commands/mcp.js +284 -28
  29. package/dist/commands/mcp.js.map +1 -1
  30. package/dist/commands/okf.d.ts +12 -0
  31. package/dist/commands/okf.d.ts.map +1 -0
  32. package/dist/commands/okf.js +411 -0
  33. package/dist/commands/okf.js.map +1 -0
  34. package/dist/commands/private.d.ts.map +1 -1
  35. package/dist/commands/private.js +6 -5
  36. package/dist/commands/private.js.map +1 -1
  37. package/dist/commands/project.d.ts.map +1 -1
  38. package/dist/commands/project.js +9 -5
  39. package/dist/commands/project.js.map +1 -1
  40. package/dist/commands/publish.d.ts.map +1 -1
  41. package/dist/commands/publish.js +0 -1
  42. package/dist/commands/publish.js.map +1 -1
  43. package/dist/commands/pull.d.ts +24 -1
  44. package/dist/commands/pull.d.ts.map +1 -1
  45. package/dist/commands/pull.js +114 -14
  46. package/dist/commands/pull.js.map +1 -1
  47. package/dist/commands/push.d.ts +1 -0
  48. package/dist/commands/push.d.ts.map +1 -1
  49. package/dist/commands/push.js +33 -13
  50. package/dist/commands/push.js.map +1 -1
  51. package/dist/commands/register.d.ts +6 -0
  52. package/dist/commands/register.d.ts.map +1 -1
  53. package/dist/commands/register.js +179 -79
  54. package/dist/commands/register.js.map +1 -1
  55. package/dist/commands/skill.d.ts.map +1 -1
  56. package/dist/commands/skill.js +121 -50
  57. package/dist/commands/skill.js.map +1 -1
  58. package/dist/commands/stack.d.ts +16 -0
  59. package/dist/commands/stack.d.ts.map +1 -0
  60. package/dist/commands/stack.js +863 -0
  61. package/dist/commands/stack.js.map +1 -0
  62. package/dist/commands/status.d.ts.map +1 -1
  63. package/dist/commands/status.js +25 -5
  64. package/dist/commands/status.js.map +1 -1
  65. package/dist/commands/sync.d.ts +23 -0
  66. package/dist/commands/sync.d.ts.map +1 -1
  67. package/dist/commands/sync.js +193 -12
  68. package/dist/commands/sync.js.map +1 -1
  69. package/dist/commands/whoami.d.ts.map +1 -1
  70. package/dist/commands/whoami.js +21 -16
  71. package/dist/commands/whoami.js.map +1 -1
  72. package/dist/create.js +0 -0
  73. package/dist/index.js +64 -7
  74. package/dist/index.js.map +1 -1
  75. package/dist/lib/api.d.ts +127 -5
  76. package/dist/lib/api.d.ts.map +1 -1
  77. package/dist/lib/api.js +142 -5
  78. package/dist/lib/api.js.map +1 -1
  79. package/dist/lib/ascii.d.ts +1 -0
  80. package/dist/lib/ascii.d.ts.map +1 -1
  81. package/dist/lib/ascii.js +9 -26
  82. package/dist/lib/ascii.js.map +1 -1
  83. package/dist/lib/canonical-json.d.ts +8 -0
  84. package/dist/lib/canonical-json.d.ts.map +1 -0
  85. package/dist/lib/canonical-json.js +29 -0
  86. package/dist/lib/canonical-json.js.map +1 -0
  87. package/dist/lib/capability-router.d.ts +58 -0
  88. package/dist/lib/capability-router.d.ts.map +1 -0
  89. package/dist/lib/capability-router.js +54 -0
  90. package/dist/lib/capability-router.js.map +1 -0
  91. package/dist/lib/compiler.d.ts +32 -0
  92. package/dist/lib/compiler.d.ts.map +1 -1
  93. package/dist/lib/compiler.js +150 -0
  94. package/dist/lib/compiler.js.map +1 -1
  95. package/dist/lib/config.d.ts +71 -35
  96. package/dist/lib/config.d.ts.map +1 -1
  97. package/dist/lib/config.js +334 -124
  98. package/dist/lib/config.js.map +1 -1
  99. package/dist/lib/decompile.d.ts +6 -1
  100. package/dist/lib/decompile.d.ts.map +1 -1
  101. package/dist/lib/decompile.js +120 -11
  102. package/dist/lib/decompile.js.map +1 -1
  103. package/dist/lib/hash.d.ts.map +1 -1
  104. package/dist/lib/hash.js +2 -19
  105. package/dist/lib/hash.js.map +1 -1
  106. package/dist/lib/heartbeat.d.ts +38 -0
  107. package/dist/lib/heartbeat.d.ts.map +1 -0
  108. package/dist/lib/heartbeat.js +70 -0
  109. package/dist/lib/heartbeat.js.map +1 -0
  110. package/dist/lib/host-link.d.ts +123 -0
  111. package/dist/lib/host-link.d.ts.map +1 -0
  112. package/dist/lib/host-link.js +350 -0
  113. package/dist/lib/host-link.js.map +1 -0
  114. package/dist/lib/merge.d.ts +50 -0
  115. package/dist/lib/merge.d.ts.map +1 -0
  116. package/dist/lib/merge.js +167 -0
  117. package/dist/lib/merge.js.map +1 -0
  118. package/dist/lib/okf-bundle.d.ts +104 -0
  119. package/dist/lib/okf-bundle.d.ts.map +1 -0
  120. package/dist/lib/okf-bundle.js +473 -0
  121. package/dist/lib/okf-bundle.js.map +1 -0
  122. package/dist/lib/okf-health.d.ts +40 -0
  123. package/dist/lib/okf-health.d.ts.map +1 -0
  124. package/dist/lib/okf-health.js +152 -0
  125. package/dist/lib/okf-health.js.map +1 -0
  126. package/dist/lib/okf-stack.d.ts +47 -0
  127. package/dist/lib/okf-stack.d.ts.map +1 -0
  128. package/dist/lib/okf-stack.js +331 -0
  129. package/dist/lib/okf-stack.js.map +1 -0
  130. package/dist/lib/okf-view.d.ts +49 -0
  131. package/dist/lib/okf-view.d.ts.map +1 -0
  132. package/dist/lib/okf-view.js +197 -0
  133. package/dist/lib/okf-view.js.map +1 -0
  134. package/dist/lib/okf.d.ts +130 -0
  135. package/dist/lib/okf.d.ts.map +1 -0
  136. package/dist/lib/okf.js +263 -0
  137. package/dist/lib/okf.js.map +1 -0
  138. package/dist/lib/onboarding.d.ts +17 -0
  139. package/dist/lib/onboarding.d.ts.map +1 -1
  140. package/dist/lib/onboarding.js +224 -207
  141. package/dist/lib/onboarding.js.map +1 -1
  142. package/dist/lib/project.d.ts +5 -0
  143. package/dist/lib/project.d.ts.map +1 -1
  144. package/dist/lib/project.js +8 -0
  145. package/dist/lib/project.js.map +1 -1
  146. package/dist/lib/projectContext.d.ts +201 -0
  147. package/dist/lib/projectContext.d.ts.map +1 -0
  148. package/dist/lib/projectContext.js +597 -0
  149. package/dist/lib/projectContext.js.map +1 -0
  150. package/dist/lib/render.d.ts +38 -1
  151. package/dist/lib/render.d.ts.map +1 -1
  152. package/dist/lib/render.js +83 -18
  153. package/dist/lib/render.js.map +1 -1
  154. package/dist/lib/skill-catalog.d.ts.map +1 -1
  155. package/dist/lib/skill-catalog.js +22 -2
  156. package/dist/lib/skill-catalog.js.map +1 -1
  157. package/dist/lib/skills.d.ts +20 -5
  158. package/dist/lib/skills.d.ts.map +1 -1
  159. package/dist/lib/skills.js +116 -58
  160. package/dist/lib/skills.js.map +1 -1
  161. package/dist/lib/stackEval.d.ts +87 -0
  162. package/dist/lib/stackEval.d.ts.map +1 -0
  163. package/dist/lib/stackEval.js +233 -0
  164. package/dist/lib/stackEval.js.map +1 -0
  165. package/dist/lib/stackImprove.d.ts +49 -0
  166. package/dist/lib/stackImprove.d.ts.map +1 -0
  167. package/dist/lib/stackImprove.js +313 -0
  168. package/dist/lib/stackImprove.js.map +1 -0
  169. package/dist/lib/stackInstall.d.ts +59 -0
  170. package/dist/lib/stackInstall.d.ts.map +1 -0
  171. package/dist/lib/stackInstall.js +162 -0
  172. package/dist/lib/stackInstall.js.map +1 -0
  173. package/dist/lib/stackSafety.d.ts +126 -0
  174. package/dist/lib/stackSafety.d.ts.map +1 -0
  175. package/dist/lib/stackSafety.js +486 -0
  176. package/dist/lib/stackSafety.js.map +1 -0
  177. package/dist/lib/stackUpdate.d.ts +44 -0
  178. package/dist/lib/stackUpdate.d.ts.map +1 -0
  179. package/dist/lib/stackUpdate.js +256 -0
  180. package/dist/lib/stackUpdate.js.map +1 -0
  181. package/dist/lib/stream.d.ts +116 -0
  182. package/dist/lib/stream.d.ts.map +1 -0
  183. package/dist/lib/stream.js +368 -0
  184. package/dist/lib/stream.js.map +1 -0
  185. package/dist/lib/youstack.d.ts +219 -0
  186. package/dist/lib/youstack.d.ts.map +1 -0
  187. package/dist/lib/youstack.js +1049 -0
  188. package/dist/lib/youstack.js.map +1 -0
  189. package/dist/mcp/registry.d.ts +133 -0
  190. package/dist/mcp/registry.d.ts.map +1 -0
  191. package/dist/mcp/registry.js +833 -0
  192. package/dist/mcp/registry.js.map +1 -0
  193. package/dist/mcp/server.d.ts +106 -5
  194. package/dist/mcp/server.d.ts.map +1 -1
  195. package/dist/mcp/server.js +851 -498
  196. package/dist/mcp/server.js.map +1 -1
  197. package/dist/postinstall.js +11 -2
  198. package/dist/postinstall.js.map +1 -1
  199. package/dist/you.d.ts +1 -0
  200. package/dist/you.js +40 -4
  201. package/dist/you.js.map +1 -1
  202. package/examples/youstack-bamfstack-public/docs/quickstart.md +34 -0
  203. package/examples/youstack-bamfstack-public/prompts/creator-draft-starter.md +15 -0
  204. package/examples/youstack-bamfstack-public/skills/bamfstack-start/SKILL.md +36 -0
  205. package/examples/youstack-bamfstack-public/tests/smoke.md +19 -0
  206. package/examples/youstack-bamfstack-public/workflows/creator-growth-workflow.md +22 -0
  207. package/examples/youstack-bamfstack-public/youstack.json +172 -0
  208. package/examples/youstack-personal/docs/quickstart.md +10 -0
  209. package/examples/youstack-personal/skills/youstack-start/SKILL.md +9 -0
  210. package/examples/youstack-personal/tests/smoke.md +9 -0
  211. package/examples/youstack-personal/workflows/startup.md +7 -0
  212. package/examples/youstack-personal/youstack.json +123 -0
  213. package/package.json +3 -3
  214. package/skills/claude-md-generator.md +1 -1
  215. package/skills/meta-improve.md +8 -3
  216. package/skills/proactive-context-fill.md +1 -1
  217. package/skills/youstack-maintainer.md +128 -0
  218. package/skills/youstack-start.md +78 -0
@@ -44,6 +44,8 @@ exports.detectFormat = detectFormat;
44
44
  exports.decompileToFilesystem = decompileToFilesystem;
45
45
  const fs = __importStar(require("fs"));
46
46
  const path = __importStar(require("path"));
47
+ const node_crypto_1 = require("node:crypto");
48
+ const canonical_json_1 = require("./canonical-json");
47
49
  /**
48
50
  * Detect whether a youJson object uses the nested server format
49
51
  * (identity.name, projects[], etc.) or the legacy CLI array format
@@ -89,7 +91,13 @@ function decompileNested(bundleDir, youJson) {
89
91
  // profile/about.md
90
92
  {
91
93
  const lines = ['---', 'title: "About"', '---', ''];
92
- lines.push(`# ${identity.name || youJson.username || ""}`);
94
+ const nameStr = identity.name || "";
95
+ // Only emit the # heading if we have a non-empty name — an empty `# ` would
96
+ // round-trip as `"#"` in bio.long because the compiler's parseAboutMd only
97
+ // matches `# <something>` (with a space and content after it).
98
+ if (nameStr) {
99
+ lines.push(`# ${nameStr}`);
100
+ }
93
101
  if (identity.tagline)
94
102
  lines.push(`\n${identity.tagline}`);
95
103
  if (identity.location)
@@ -221,15 +229,18 @@ function decompileNested(bundleDir, youJson) {
221
229
  filesWritten++;
222
230
  }
223
231
  }
224
- // voice/voice.md
232
+ // voice/voice.md — only write if there is actual content
225
233
  {
226
234
  const rawMarkdown = typeof voice.markdown === "string" ? voice.markdown.trim() : "";
227
235
  const overall = voice.overall || analysis.voice_summary || "";
228
- const lines = ['---', 'title: "Voice Profile"', '---', ''];
229
- lines.push(rawMarkdown || overall || "(your overall communication style)");
230
- lines.push("");
231
- fs.writeFileSync(path.join(voiceDir, "voice.md"), lines.join("\n"));
232
- filesWritten++;
236
+ const voiceContent = rawMarkdown || overall;
237
+ if (voiceContent) {
238
+ const lines = ['---', 'title: "Voice Profile"', '---', ''];
239
+ lines.push(voiceContent);
240
+ lines.push("");
241
+ fs.writeFileSync(path.join(voiceDir, "voice.md"), lines.join("\n"));
242
+ filesWritten++;
243
+ }
233
244
  }
234
245
  // voice/voice.{platform}.md
235
246
  const platforms = voice.platforms || {};
@@ -301,23 +312,121 @@ function decompileArray(bundleDir, youJson) {
301
312
  }
302
313
  return filesWritten;
303
314
  }
315
+ /**
316
+ * Load manifest.sha256.json from a bundle directory if present.
317
+ * Returns null when the file is absent or unparseable.
318
+ */
319
+ function loadSha256Manifest(bundleDir) {
320
+ const manifestPath = path.join(bundleDir, "manifest.sha256.json");
321
+ if (!fs.existsSync(manifestPath))
322
+ return null;
323
+ try {
324
+ return JSON.parse(fs.readFileSync(manifestPath, "utf-8"));
325
+ }
326
+ catch {
327
+ return null;
328
+ }
329
+ }
330
+ /**
331
+ * Verify a single section hash from the manifest against the decompiled youJson.
332
+ * Returns a warning string if the hash mismatches, or null if it matches / cannot verify.
333
+ * Warnings are non-fatal — callers should print them dimly.
334
+ */
335
+ function verifySectionHash(sectionKey, expectedHash, youJson) {
336
+ const [dir, slug] = sectionKey.split("/");
337
+ let value;
338
+ // Mirror extractSectionValue logic from compiler.ts
339
+ const identity = youJson.identity || {};
340
+ const now = youJson.now || {};
341
+ const prefs = youJson.preferences || {};
342
+ const voice = youJson.voice || {};
343
+ const directives = youJson.agent_directives || {};
344
+ if (dir === "profile") {
345
+ if (slug === "about")
346
+ value = identity;
347
+ else if (slug === "now")
348
+ value = now.focus;
349
+ else if (slug === "projects")
350
+ value = youJson.projects;
351
+ else if (slug === "values")
352
+ value = youJson.values;
353
+ else if (slug === "links")
354
+ value = youJson.links;
355
+ else {
356
+ const customs = youJson.custom_sections || [];
357
+ value = customs.find((s) => s.id === slug) ?? slug;
358
+ }
359
+ }
360
+ else if (dir === "preferences") {
361
+ if (slug === "agent")
362
+ value = prefs.agent;
363
+ else if (slug === "writing")
364
+ value = prefs.writing;
365
+ else
366
+ value = slug;
367
+ }
368
+ else if (dir === "voice") {
369
+ if (slug === "voice")
370
+ value = { overall: voice.overall, markdown: voice.markdown };
371
+ else {
372
+ const platforms = voice.platforms || {};
373
+ const platform = slug.startsWith("voice.") ? slug.slice("voice.".length) : slug;
374
+ value = platforms[platform] ?? slug;
375
+ }
376
+ }
377
+ else if (dir === "directives") {
378
+ if (slug === "agent")
379
+ value = directives;
380
+ else
381
+ value = slug;
382
+ }
383
+ else {
384
+ return null;
385
+ }
386
+ const actualHash = (0, node_crypto_1.createHash)("sha256")
387
+ .update((0, canonical_json_1.canonicalJsonString)(value), "utf-8")
388
+ .digest("hex");
389
+ if (actualHash !== expectedHash) {
390
+ return `manifest.sha256.json: section "${sectionKey}" hash mismatch (expected ${expectedHash.slice(0, 12)}… got ${actualHash.slice(0, 12)}…)`;
391
+ }
392
+ return null;
393
+ }
304
394
  // ─── Public API ──────────────────────────────────────────────────────
305
395
  /**
306
396
  * Decompile a youJson bundle to the filesystem.
307
397
  * Creates all standard directories and writes markdown files.
308
398
  * Returns the number of files written.
399
+ *
400
+ * If manifest.sha256.json is present in bundleDir, verifies each section hash
401
+ * and emits a dim warning (to stderr) for any mismatch — non-fatal.
309
402
  */
310
- function decompileToFilesystem(bundleDir, youJson) {
403
+ function decompileToFilesystem(bundleDir, youJson, options) {
311
404
  ensureStandardDirs(bundleDir);
312
405
  const format = detectFormat(youJson);
406
+ let filesWritten = 0;
313
407
  switch (format) {
314
408
  case "nested":
315
- return decompileNested(bundleDir, youJson);
409
+ filesWritten = decompileNested(bundleDir, youJson);
410
+ break;
316
411
  case "array":
317
- return decompileArray(bundleDir, youJson);
412
+ filesWritten = decompileArray(bundleDir, youJson);
413
+ break;
318
414
  default:
319
415
  // Unknown format — still create scaffold files
320
- return 0;
416
+ filesWritten = 0;
417
+ }
418
+ // Verify manifest if present
419
+ const sha256Manifest = loadSha256Manifest(bundleDir);
420
+ if (sha256Manifest && typeof sha256Manifest.sections === "object") {
421
+ const warn = options?.warnOnHashMismatch ?? ((msg) => {
422
+ process.stderr.write("\x1b[2m" + msg + "\x1b[0m\n");
423
+ });
424
+ for (const [sectionKey, expectedHash] of Object.entries(sha256Manifest.sections)) {
425
+ const warning = verifySectionHash(sectionKey, expectedHash, youJson);
426
+ if (warning)
427
+ warn(warning);
428
+ }
321
429
  }
430
+ return filesWritten;
322
431
  }
323
432
  //# sourceMappingURL=decompile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decompile.js","sourceRoot":"","sources":["../../src/lib/decompile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decompile.js","sourceRoot":"","sources":["../../src/lib/decompile.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/lib/hash.ts"],"names":[],"mappings":"AAoBA,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C"}
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/lib/hash.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C"}
package/dist/lib/hash.js CHANGED
@@ -3,26 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.computeContentHash = computeContentHash;
4
4
  exports.shortHash = shortHash;
5
5
  const node_crypto_1 = require("node:crypto");
6
- // Deterministic JSON serialization — MUST match server-side canonicalJsonString exactly
7
- function canonicalJsonString(obj) {
8
- if (obj === null || obj === undefined)
9
- return "null";
10
- if (typeof obj === "string")
11
- return JSON.stringify(obj);
12
- if (typeof obj === "number" || typeof obj === "boolean")
13
- return String(obj);
14
- if (Array.isArray(obj)) {
15
- return "[" + obj.map(canonicalJsonString).join(",") + "]";
16
- }
17
- if (typeof obj === "object") {
18
- const keys = Object.keys(obj).sort();
19
- const pairs = keys.map((k) => JSON.stringify(k) + ":" + canonicalJsonString(obj[k]));
20
- return "{" + pairs.join(",") + "}";
21
- }
22
- return String(obj);
23
- }
6
+ const canonical_json_1 = require("./canonical-json");
24
7
  function computeContentHash(youJson, youMd) {
25
- const content = canonicalJsonString(youJson) + "\n---\n" + youMd;
8
+ const content = (0, canonical_json_1.canonicalJsonString)(youJson) + "\n---\n" + youMd;
26
9
  return (0, node_crypto_1.createHash)("sha256").update(content, "utf-8").digest("hex");
27
10
  }
28
11
  function shortHash(hash) {
@@ -1 +1 @@
1
- {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/lib/hash.ts"],"names":[],"mappings":";;AAoBA,gDAGC;AAED,8BAEC;AA3BD,6CAAyC;AAEzC,wFAAwF;AACxF,SAAS,mBAAmB,CAAC,GAAY;IACvC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACrD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5E,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAA8B,CAAC,CAAC,IAAI,EAAE,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,mBAAmB,CAAE,GAA+B,CAAC,CAAC,CAAC,CAAC,CAC1F,CAAC;QACF,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACrC,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,SAAgB,kBAAkB,CAAC,OAAgB,EAAE,KAAa;IAChE,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC;IACjE,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAED,SAAgB,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../src/lib/hash.ts"],"names":[],"mappings":";;AAGA,gDAGC;AAED,8BAEC;AAVD,6CAAyC;AACzC,qDAAuD;AAEvD,SAAgB,kBAAkB,CAAC,OAAgB,EAAE,KAAa;IAChE,MAAM,OAAO,GAAG,IAAA,oCAAmB,EAAC,OAAO,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC;IACjE,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAED,SAAgB,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * heartbeat.ts — L15 visible heartbeat signal.
3
+ *
4
+ * Checks two conditions:
5
+ * 1. activityInsights returns any skills with successRate < 0.8 (low performers).
6
+ * 2. The consolidationRuns review-queue (via local cache or remote read) is
7
+ * non-empty.
8
+ *
9
+ * Returns a single dim "stack wants to improve" message when either condition
10
+ * is true. Callers surface this ONCE per command invocation — no spam.
11
+ *
12
+ * NOTE: This module performs read-only, non-blocking checks using already-cached
13
+ * local data where possible. Remote calls are attempted only when already
14
+ * authenticated; failures are silently suppressed (heartbeat is advisory, not
15
+ * blocking).
16
+ */
17
+ export interface HeartbeatSignal {
18
+ /** True when at least one improvement trigger is detected. */
19
+ active: boolean;
20
+ /** Single human-readable dim line for status / doctor output. */
21
+ message: string;
22
+ /** Breakdown of what triggered the signal. */
23
+ reasons: string[];
24
+ }
25
+ /**
26
+ * Returns a heartbeat signal by checking live skill insights (if authenticated).
27
+ * The result is meant to be cached and shown once per command invocation.
28
+ */
29
+ export declare function getHeartbeatSignal(): Promise<HeartbeatSignal>;
30
+ /**
31
+ * Synchronous version using only local data (no network calls).
32
+ * Checks whether any locally-tracked skill metrics show zero success events,
33
+ * which is a weak but fast proxy for low-performing skills.
34
+ *
35
+ * Returns null when there is no local signal to report.
36
+ */
37
+ export declare function getLocalHeartbeatHint(): string | null;
38
+ //# sourceMappingURL=heartbeat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/lib/heartbeat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,MAAM,EAAE,OAAO,CAAC;IAChB,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAaD;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CA4BnE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,GAAG,IAAI,CAIrD"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ /**
3
+ * heartbeat.ts — L15 visible heartbeat signal.
4
+ *
5
+ * Checks two conditions:
6
+ * 1. activityInsights returns any skills with successRate < 0.8 (low performers).
7
+ * 2. The consolidationRuns review-queue (via local cache or remote read) is
8
+ * non-empty.
9
+ *
10
+ * Returns a single dim "stack wants to improve" message when either condition
11
+ * is true. Callers surface this ONCE per command invocation — no spam.
12
+ *
13
+ * NOTE: This module performs read-only, non-blocking checks using already-cached
14
+ * local data where possible. Remote calls are attempted only when already
15
+ * authenticated; failures are silently suppressed (heartbeat is advisory, not
16
+ * blocking).
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.getHeartbeatSignal = getHeartbeatSignal;
20
+ exports.getLocalHeartbeatHint = getLocalHeartbeatHint;
21
+ const api_1 = require("./api");
22
+ const config_1 = require("./config");
23
+ // ---------------------------------------------------------------------------
24
+ // Thresholds
25
+ // ---------------------------------------------------------------------------
26
+ /** Skills with successRate below this threshold count as low-performers. */
27
+ const LOW_PERFORMER_THRESHOLD = 0.8;
28
+ // ---------------------------------------------------------------------------
29
+ // Main function
30
+ // ---------------------------------------------------------------------------
31
+ /**
32
+ * Returns a heartbeat signal by checking live skill insights (if authenticated).
33
+ * The result is meant to be cached and shown once per command invocation.
34
+ */
35
+ async function getHeartbeatSignal() {
36
+ const reasons = [];
37
+ if ((0, config_1.isAuthenticated)()) {
38
+ try {
39
+ const res = await (0, api_1.getSkillInsights)();
40
+ if (res.ok && Array.isArray(res.data?.insights)) {
41
+ const lowPerformers = res.data.insights.filter((s) => s.successRate < LOW_PERFORMER_THRESHOLD && s.uses >= 2);
42
+ if (lowPerformers.length > 0) {
43
+ const names = lowPerformers.map((s) => s.skill).slice(0, 2).join(", ");
44
+ reasons.push(`${lowPerformers.length} skill${lowPerformers.length === 1 ? "" : "s"} with low success rate (${names})`);
45
+ }
46
+ }
47
+ }
48
+ catch {
49
+ // Network unavailable — heartbeat is advisory, never blocking.
50
+ }
51
+ }
52
+ const active = reasons.length > 0;
53
+ const message = active
54
+ ? "stack wants to improve — run `youmd stack improve` to generate proposals"
55
+ : "";
56
+ return { active, message, reasons };
57
+ }
58
+ /**
59
+ * Synchronous version using only local data (no network calls).
60
+ * Checks whether any locally-tracked skill metrics show zero success events,
61
+ * which is a weak but fast proxy for low-performing skills.
62
+ *
63
+ * Returns null when there is no local signal to report.
64
+ */
65
+ function getLocalHeartbeatHint() {
66
+ // Local-only: always return null since local metrics don't track outcomes.
67
+ // Real signal comes from the async getHeartbeatSignal() call.
68
+ return null;
69
+ }
70
+ //# sourceMappingURL=heartbeat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/lib/heartbeat.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAiCH,gDA4BC;AASD,sDAIC;AAxED,+BAAyC;AACzC,qCAA2C;AAe3C,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,4EAA4E;AAC5E,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E;;;GAGG;AACI,KAAK,UAAU,kBAAkB;IACtC,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,IAAA,wBAAe,GAAE,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAA,sBAAgB,GAAE,CAAC;YACrC,IAAI,GAAG,CAAC,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;gBAChD,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,uBAAuB,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAC9D,CAAC;gBACF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACvE,OAAO,CAAC,IAAI,CACV,GAAG,aAAa,CAAC,MAAM,SAAS,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,2BAA2B,KAAK,GAAG,CACzG,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM;QACpB,CAAC,CAAC,0EAA0E;QAC5E,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB;IACnC,2EAA2E;IAC3E,8DAA8D;IAC9D,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Host-link engine — the ONE implementation that links You.md skills and
3
+ * YouStack adapters into agent hosts (Claude Code, Codex, Cursor, fallback).
4
+ *
5
+ * P11 / PRODUCT-AUDIT #13 / FEATURE-ROADMAP 3.7: there used to be multiple
6
+ * drifting per-host link code paths (youstack.ts switch + skills.ts switch).
7
+ * They are consolidated here. Hosts differ ONLY by adapter config (target
8
+ * dir, file naming, frontmatter shape) — never by separate code paths.
9
+ *
10
+ * Claude Code discovery contract (the empirical release gate):
11
+ * - every linked skill lands at `.claude/skills/<skill-name>/SKILL.md`
12
+ * - SKILL.md frontmatter parses and has non-empty `name` + `description`
13
+ * - frontmatter `name` matches the skill directory name
14
+ * - the skill body is non-empty
15
+ */
16
+ export type HostLinkLayout = "skill-dir" | "flat-file" | "concat-file";
17
+ export interface HostAdapterConfig {
18
+ /** Normalized host id (claude-code, codex, cursor, or a fallback id). */
19
+ host: string;
20
+ /**
21
+ * skill-dir → <root>/<name>/SKILL.md (Claude Code / Codex discovery layout)
22
+ * flat-file → <root>/<prefix><name>.md
23
+ * concat-file → single <root>/<concatFileName> with one section per skill
24
+ */
25
+ layout: HostLinkLayout;
26
+ /** Path segments of the host's link root, relative to the target dir. */
27
+ rootSegments: string[];
28
+ /** flat-file only: filename prefix (e.g. "youstacks-"). */
29
+ filePrefix?: string;
30
+ /** concat-file only: output filename (e.g. "youmd.md"). */
31
+ concatFileName?: string;
32
+ /** concat-file only: header parts joined with "\n" before sections. */
33
+ concatHeaderParts?: string[];
34
+ /**
35
+ * ensure → guarantee parseable frontmatter with name (matching the skill
36
+ * dir) + description. none → emit content untouched.
37
+ */
38
+ frontmatter: "ensure" | "none";
39
+ }
40
+ /** One linkable skill: name + rendered markdown (may include frontmatter). */
41
+ export interface HostSkillUnit {
42
+ name: string;
43
+ description?: string;
44
+ content: string;
45
+ }
46
+ export interface HostLinkPlanEntry {
47
+ host: string;
48
+ relativePath: string;
49
+ content: string;
50
+ }
51
+ export interface HostLinkWriteResult extends HostLinkPlanEntry {
52
+ targetPath: string;
53
+ wrote: boolean;
54
+ }
55
+ export interface SkillDiscoveryCheck {
56
+ /** Path of the checked SKILL.md (relative or absolute, as provided). */
57
+ path: string;
58
+ /** Frontmatter name, when parseable. */
59
+ name: string;
60
+ ok: boolean;
61
+ problems: string[];
62
+ }
63
+ export interface SkillDiscoveryReport {
64
+ ok: boolean;
65
+ checks: SkillDiscoveryCheck[];
66
+ }
67
+ /** Adapter configs for YouStack manifest links (`youmd stack link`). */
68
+ export declare function youStackHostAdapterConfig(host: string): HostAdapterConfig;
69
+ export type InstalledSkillsTarget = "claude" | "cursor" | "codex";
70
+ /** Adapter configs for installed-skill links (`youmd skill link`). */
71
+ export declare function installedSkillsHostAdapterConfig(target: InstalledSkillsTarget): HostAdapterConfig;
72
+ export declare function isSafeHostRelativePath(value: string): boolean;
73
+ /**
74
+ * Guarantee that skill content carries parseable frontmatter with a `name`
75
+ * matching the skill's directory and a non-empty `description` — the
76
+ * conditions Claude Code requires for discovery.
77
+ *
78
+ * Content that already satisfies the contract passes through byte-identical.
79
+ */
80
+ export declare function ensureSkillFrontmatter(content: string, name: string, fallbackDescription?: string): string;
81
+ /** Default relative path the engine emits for one skill on a host. */
82
+ export declare function hostLinkRelativePath(config: HostAdapterConfig, name: string): string;
83
+ /**
84
+ * Build the per-host link plan: paths + rendered content.
85
+ *
86
+ * `explicitRelativePaths` lets a manifest declare adapter output paths that
87
+ * override the host's default layout (existing youstack.json behavior).
88
+ */
89
+ export declare function buildHostLinkPlan(units: HostSkillUnit[], config: HostAdapterConfig, options?: {
90
+ explicitRelativePaths?: string[];
91
+ }): HostLinkPlanEntry[];
92
+ /** Write a link plan under `targetDir` (or preview it with dryRun). */
93
+ export declare function writeHostLinkPlan(plan: HostLinkPlanEntry[], targetDir: string, options?: {
94
+ dryRun?: boolean;
95
+ }): HostLinkWriteResult[];
96
+ /**
97
+ * Verify one emitted SKILL.md against the Claude Code discovery contract:
98
+ * parseable frontmatter, non-empty name + description, name matching the
99
+ * parent directory, non-empty body.
100
+ */
101
+ export declare function verifySkillDiscoveryEntry(filePath: string, content: string): SkillDiscoveryCheck;
102
+ /**
103
+ * Verify every SKILL.md in a set of emitted link entries (plan entries or
104
+ * write results). Non-SKILL.md outputs (cursor rules, fallback adapters)
105
+ * are not discovery surfaces and are skipped.
106
+ */
107
+ export declare function verifySkillDiscovery(entries: Array<{
108
+ relativePath?: string;
109
+ targetPath?: string;
110
+ content: string;
111
+ }>): SkillDiscoveryReport;
112
+ /**
113
+ * CI helper: verify every `<skillsRoot>/<name>/SKILL.md` on disk (e.g.
114
+ * `.claude/skills/`) against the discovery contract.
115
+ */
116
+ export declare function verifySkillFilesOnDisk(skillsRoot: string): SkillDiscoveryReport;
117
+ /**
118
+ * Detection helper: have any of the given skills been linked into the
119
+ * Claude Code discovery layout under `root`? Also recognizes the legacy
120
+ * `.claude/skills/youmd/` directory so older links still count.
121
+ */
122
+ export declare function hasLinkedClaudeSkills(root: string, skillNames: string[]): boolean;
123
+ //# sourceMappingURL=host-link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-link.d.ts","sourceRoot":"","sources":["../../src/lib/host-link.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,MAAM,EAAE,cAAc,CAAC;IACvB,yEAAyE;IACzE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;OAGG;IACH,WAAW,EAAE,QAAQ,GAAG,MAAM,CAAC;CAChC;AAED,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAID,wEAAwE;AACxE,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAmCzE;AAED,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElE,sEAAsE;AACtE,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,qBAAqB,GAC5B,iBAAiB,CA+BnB;AAID,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAI7D;AAmBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,mBAAmB,CAAC,EAAE,MAAM,GAC3B,MAAM,CAyBR;AASD,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQpF;AAID;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,EAAE,EACtB,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE;IAAE,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACjD,iBAAiB,EAAE,CA4CrB;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,iBAAiB,EAAE,EACzB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,mBAAmB,EAAE,CAUvB;AAID;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAgChG;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,KAAK,CAAC;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9E,oBAAoB,CAMtB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,CAW/E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAMjF"}