@rubytech/create-sitedesk-code 0.1.530 → 0.1.531

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 (97) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/graph-write/dist/index.d.ts.map +1 -1
  3. package/payload/platform/lib/graph-write/dist/index.js +4 -0
  4. package/payload/platform/lib/graph-write/dist/index.js.map +1 -1
  5. package/payload/platform/lib/graph-write/src/index.ts +4 -0
  6. package/payload/platform/lib/learning-constants/dist/index.d.ts +35 -0
  7. package/payload/platform/lib/learning-constants/dist/index.d.ts.map +1 -0
  8. package/payload/platform/lib/learning-constants/dist/index.js +50 -0
  9. package/payload/platform/lib/learning-constants/dist/index.js.map +1 -0
  10. package/payload/platform/lib/learning-constants/package.json +7 -0
  11. package/payload/platform/lib/learning-constants/src/index.test.ts +47 -0
  12. package/payload/platform/lib/learning-constants/src/index.ts +57 -0
  13. package/payload/platform/lib/learning-constants/tsconfig.json +9 -0
  14. package/payload/platform/neo4j/schema.cypher +24 -0
  15. package/payload/platform/package.json +1 -1
  16. package/payload/platform/plugins/admin/.claude-plugin/plugin.json +1 -1
  17. package/payload/platform/plugins/admin/PLUGIN.md +1 -1
  18. package/payload/platform/plugins/admin/mcp/dist/index.js +2 -2
  19. package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
  20. package/payload/platform/plugins/admin/skills/insight/SKILL.md +1 -1
  21. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +58 -10
  22. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +7 -0
  23. package/payload/platform/plugins/docs/references/linkedin-extension.md +18 -9
  24. package/payload/platform/plugins/docs/references/session-retrospective.md +39 -0
  25. package/payload/platform/plugins/linkedin-extension/.claude-plugin/plugin.json +1 -1
  26. package/payload/platform/plugins/linkedin-extension/PLUGIN.md +7 -10
  27. package/payload/platform/plugins/linkedin-extension/extension/README.md +20 -17
  28. package/payload/platform/plugins/linkedin-extension/extension/background/sw.js +96 -13
  29. package/payload/platform/plugins/linkedin-extension/extension/manifest.json +3 -18
  30. package/payload/platform/plugins/linkedin-extension/extension/options/options.html +2 -2
  31. package/payload/platform/plugins/linkedin-extension/extension/options/options.js +1 -1
  32. package/payload/platform/plugins/memory/.claude-plugin/plugin.json +1 -1
  33. package/payload/platform/plugins/memory/PLUGIN.md +15 -1
  34. package/payload/platform/plugins/memory/mcp/dist/index.js +169 -0
  35. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  36. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/session-jsonl.test.d.ts +2 -0
  37. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/session-jsonl.test.d.ts.map +1 -0
  38. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/session-jsonl.test.js +95 -0
  39. package/payload/platform/plugins/memory/mcp/dist/lib/__tests__/session-jsonl.test.js.map +1 -0
  40. package/payload/platform/plugins/memory/mcp/dist/lib/session-jsonl.d.ts +60 -0
  41. package/payload/platform/plugins/memory/mcp/dist/lib/session-jsonl.d.ts.map +1 -0
  42. package/payload/platform/plugins/memory/mcp/dist/lib/session-jsonl.js +153 -0
  43. package/payload/platform/plugins/memory/mcp/dist/lib/session-jsonl.js.map +1 -0
  44. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/cross-account.test.js +6 -4
  45. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/cross-account.test.js.map +1 -1
  46. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-derive.test.d.ts +2 -0
  47. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-derive.test.d.ts.map +1 -0
  48. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-derive.test.js +160 -0
  49. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-derive.test.js.map +1 -0
  50. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-recall.test.d.ts +2 -0
  51. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-recall.test.d.ts.map +1 -0
  52. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-recall.test.js +64 -0
  53. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-recall.test.js.map +1 -0
  54. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-scan.test.d.ts +2 -0
  55. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-scan.test.d.ts.map +1 -0
  56. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-scan.test.js +78 -0
  57. package/payload/platform/plugins/memory/mcp/dist/tools/__tests__/learnings-scan.test.js.map +1 -0
  58. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-derive.d.ts +41 -0
  59. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-derive.d.ts.map +1 -0
  60. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-derive.js +225 -0
  61. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-derive.js.map +1 -0
  62. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-recall.d.ts +31 -0
  63. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-recall.d.ts.map +1 -0
  64. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-recall.js +67 -0
  65. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-recall.js.map +1 -0
  66. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-scan.d.ts +40 -0
  67. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-scan.d.ts.map +1 -0
  68. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-scan.js +55 -0
  69. package/payload/platform/plugins/memory/mcp/dist/tools/learnings-scan.js.map +1 -0
  70. package/payload/platform/plugins/memory/references/schema-base.md +3 -0
  71. package/payload/platform/plugins/memory/skills/learnings-recall/SKILL.md +27 -0
  72. package/payload/platform/plugins/whatsapp/mcp/dist/index.js +4 -4
  73. package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -1
  74. package/payload/platform/plugins/whatsapp/references/channels-whatsapp.md +3 -3
  75. package/payload/platform/plugins/whatsapp/skills/connect-whatsapp/SKILL.md +6 -2
  76. package/payload/platform/plugins/whatsapp/skills/manage-whatsapp-config/SKILL.md +5 -1
  77. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
  78. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +3 -0
  79. package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
  80. package/payload/platform/services/claude-session-manager/dist/learning-index.d.ts +28 -0
  81. package/payload/platform/services/claude-session-manager/dist/learning-index.d.ts.map +1 -0
  82. package/payload/platform/services/claude-session-manager/dist/learning-index.js +70 -0
  83. package/payload/platform/services/claude-session-manager/dist/learning-index.js.map +1 -0
  84. package/payload/platform/services/claude-session-manager/dist/pty-spawner.d.ts.map +1 -1
  85. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js +18 -0
  86. package/payload/platform/services/claude-session-manager/dist/pty-spawner.js.map +1 -1
  87. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts +6 -0
  88. package/payload/platform/services/claude-session-manager/dist/system-prompt.d.ts.map +1 -1
  89. package/payload/platform/services/claude-session-manager/dist/system-prompt.js +17 -0
  90. package/payload/platform/services/claude-session-manager/dist/system-prompt.js.map +1 -1
  91. package/payload/platform/templates/specialists/agents/librarian.md +1 -1
  92. package/payload/server/{chunk-2YMGNYA3.js → chunk-SVB5NZ64.js} +41 -30
  93. package/payload/server/{manager-XPRN5UF5.js → manager-4Q3DTLXO.js} +5 -1
  94. package/payload/server/server.js +65 -17
  95. package/payload/platform/plugins/linkedin-extension/extension/assets/pill.css +0 -52
  96. package/payload/platform/plugins/linkedin-extension/extension/content/profile.js +0 -100
  97. package/payload/platform/plugins/linkedin-extension/extension/content/thread.js +0 -102
@@ -49,6 +49,9 @@ import { graphPruneDenylistRemove } from "./tools/graph-prune-denylist-remove.js
49
49
  import { conversationMemoryExpunge } from "./tools/conversation-memory-expunge.js";
50
50
  import { conversationArchiveDeriveInsights, PROPOSAL_KINDS, } from "./tools/conversation-archive-derive-insights.js";
51
51
  import { conversationArchiveListChunks } from "./tools/conversation-archive-list-chunks.js";
52
+ import { learningsScan } from "./tools/learnings-scan.js";
53
+ import { learningsDerive } from "./tools/learnings-derive.js";
54
+ import { learningsRecall } from "./tools/learnings-recall.js";
52
55
  import { conversationArchiveEnrichRejection } from "./tools/conversation-archive-enrich-rejection.js";
53
56
  import { fetchImageAsContent } from "./tools/image-fetch.js";
54
57
  import { memoryReportWrite } from "./tools/memory-report-write.js";
@@ -2688,6 +2691,172 @@ lifelineTool(server, "memory-review-queue", "Read-only summary of the dream-cycl
2688
2691
  };
2689
2692
  }
2690
2693
  });
2694
+ // ---------------------------------------------------------------------------
2695
+ // Task 2220 — the learnings surface. Three tools:
2696
+ // learnings-scan pages session transcripts off disk to the caller's turn
2697
+ // learnings-derive reconciles the turn's claims into :Learning writes, decays
2698
+ // learnings-recall the only path from an injected title to a body
2699
+ // The scan/derive split mirrors conversation-archive-list-chunks +
2700
+ // conversation-archive-derive-insights: the agent reads chunks in-turn and
2701
+ // hands back claims, rather than the server guessing what a transcript meant.
2702
+ // ---------------------------------------------------------------------------
2703
+ lifelineTool(server, "learnings-scan", "Page through session transcripts written since `sinceIso` and return turn-attributed chunk bodies. Read each chunk in-turn, form per-chunk claims about what the session established, then hand those claims to `learnings-derive`. Read-only; writes nothing. Requires CLAUDE_CONFIG_DIR and refuses without it rather than guessing a projects root.", {
2704
+ sinceIso: z
2705
+ .string()
2706
+ .optional()
2707
+ .describe("Only sessions whose last write is strictly after this ISO timestamp. Omit to scan every session. The overnight pass supplies the previous run's :Report timestamp."),
2708
+ sessionOffset: z
2709
+ .number()
2710
+ .int()
2711
+ .nonnegative()
2712
+ .optional()
2713
+ .describe("Zero-based session offset. Default 0. Advance by sessionLimit per page."),
2714
+ sessionLimit: z
2715
+ .number()
2716
+ .int()
2717
+ .positive()
2718
+ .max(25)
2719
+ .optional()
2720
+ .describe("Sessions per page (1..25). Default 5."),
2721
+ chunkIndex: z
2722
+ .number()
2723
+ .int()
2724
+ .nonnegative()
2725
+ .optional()
2726
+ .describe("Zero-based chunk within each returned session. Default 0."),
2727
+ chunkTurns: z
2728
+ .number()
2729
+ .int()
2730
+ .positive()
2731
+ .max(200)
2732
+ .optional()
2733
+ .describe("Turns per chunk (1..200). Default 40. Counts turns, not file lines."),
2734
+ targetAccountId: z.string().optional().describe(XACCT_DESC),
2735
+ }, async ({ sinceIso, sessionOffset, sessionLimit, chunkIndex, chunkTurns, targetAccountId }) => {
2736
+ const scoped = resolveToolAccount("learnings-scan", targetAccountId);
2737
+ if ("reject" in scoped)
2738
+ return scoped.reject;
2739
+ const accountId = scoped.accountId;
2740
+ try {
2741
+ const result = await learningsScan({
2742
+ accountId,
2743
+ sinceIso,
2744
+ sessionOffset,
2745
+ sessionLimit,
2746
+ chunkIndex,
2747
+ chunkTurns,
2748
+ });
2749
+ const header = `sinceIso=${result.sinceIso ?? "-"} candidateFiles=${result.candidateFiles} ` +
2750
+ `sessions=${result.sessions} skipped=${result.skipped} returned=${result.rows.length}`;
2751
+ const blocks = result.rows
2752
+ .map((r) => [
2753
+ `Session ${r.sessionId} (last write ${r.lastWriteIso}):`,
2754
+ ` chunk=${r.chunkIndex + 1}/${r.totalChunks}`,
2755
+ ` body=${JSON.stringify(r.body)}`,
2756
+ ].join("\n"))
2757
+ .join("\n\n");
2758
+ return {
2759
+ content: [
2760
+ {
2761
+ type: "text",
2762
+ text: result.rows.length === 0
2763
+ ? `${header}\n(no sessions at this offset)`
2764
+ : `${header}\n\n${blocks}`,
2765
+ },
2766
+ ],
2767
+ };
2768
+ }
2769
+ catch (err) {
2770
+ const msg = err instanceof Error ? err.message : String(err);
2771
+ return { content: [{ type: "text", text: msg }], isError: true };
2772
+ }
2773
+ });
2774
+ lifelineTool(server, "learnings-derive", "Turn the claims you formed from `learnings-scan` output into :Learning writes. Each claim resolves against existing learnings first: a same-subject match reinforces or contradicts that node, anything novel is created at initial confidence. Set `runDecay` on the overnight pass to age learnings nobody re-observed.", {
2775
+ sessionId: z
2776
+ .string()
2777
+ .describe("The session id the claims were read from (required). Recorded in sourceSessionIds."),
2778
+ claims: z
2779
+ .array(z.object({
2780
+ title: z
2781
+ .string()
2782
+ .describe("Short handle for the learning. This is the text that reaches a system prompt."),
2783
+ body: z
2784
+ .string()
2785
+ .describe("The full text. Never injected into a prompt; fetched on demand via learnings-recall."),
2786
+ mode: z
2787
+ .enum(["reinforce", "contradict"])
2788
+ .describe("Your stance. `reinforce` when the claim agrees with what is already known, `contradict` when it disputes it. The tool never infers this from the text."),
2789
+ }))
2790
+ .describe("Per-chunk claims from your reading of learnings-scan output."),
2791
+ runDecay: z
2792
+ .boolean()
2793
+ .optional()
2794
+ .describe("Run the decay pass after the claims land. The overnight pass sets it true; an ad-hoc call leaves it false."),
2795
+ targetAccountId: z.string().optional().describe(XACCT_DESC),
2796
+ }, async ({ sessionId, claims, runDecay, targetAccountId }) => {
2797
+ const scoped = resolveToolAccount("learnings-derive", targetAccountId);
2798
+ if ("reject" in scoped)
2799
+ return scoped.reject;
2800
+ const accountId = scoped.accountId;
2801
+ try {
2802
+ const result = await learningsDerive({ accountId, sessionId, claims, runDecay });
2803
+ const decayLine = result.decay
2804
+ ? ` decayExamined=${result.decay.examined} decayed=${result.decay.decayed} floored=${result.decay.floored}`
2805
+ : "";
2806
+ return {
2807
+ content: [
2808
+ {
2809
+ type: "text",
2810
+ text: `created=${result.created} amplified=${result.amplified} ` +
2811
+ `relegated=${result.relegated}${decayLine}`,
2812
+ },
2813
+ ],
2814
+ };
2815
+ }
2816
+ catch (err) {
2817
+ const msg = err instanceof Error ? err.message : String(err);
2818
+ return { content: [{ type: "text", text: msg }], isError: true };
2819
+ }
2820
+ });
2821
+ lifelineTool(server, "learnings-recall", "Fetch the full text of a learning by title or id. Your system prompt carries learning titles only; this is the single path to a body. Returns confidence, when it was last observed, how many sessions produced it, and whether a later session contradicted it.", {
2822
+ title: z
2823
+ .string()
2824
+ .optional()
2825
+ .describe("Case-insensitive substring of the learning title, as it appeared in the learnings index in your system prompt."),
2826
+ learningId: z.string().optional().describe("Exact learningId, when you have one."),
2827
+ targetAccountId: z.string().optional().describe(XACCT_DESC),
2828
+ }, async ({ title, learningId, targetAccountId }) => {
2829
+ const scoped = resolveToolAccount("learnings-recall", targetAccountId);
2830
+ if ("reject" in scoped)
2831
+ return scoped.reject;
2832
+ const accountId = scoped.accountId;
2833
+ try {
2834
+ const result = await learningsRecall({ accountId, title, learningId });
2835
+ if (result.rows.length === 0) {
2836
+ return {
2837
+ content: [{ type: "text", text: "rows=0 (no learning matched)" }],
2838
+ };
2839
+ }
2840
+ const blocks = result.rows
2841
+ .map((r) => [
2842
+ `learningId=${r.learningId}`,
2843
+ ` title=${JSON.stringify(r.title)}`,
2844
+ ` confidence=${r.confidence} observations=${r.observationCount} observedAt=${r.observedAt}`,
2845
+ r.contradictedAt ? ` contradictedAt=${r.contradictedAt}` : null,
2846
+ ` body=${JSON.stringify(r.body)}`,
2847
+ ]
2848
+ .filter((l) => l !== null)
2849
+ .join("\n"))
2850
+ .join("\n\n");
2851
+ return {
2852
+ content: [{ type: "text", text: `rows=${result.rows.length}\n\n${blocks}` }],
2853
+ };
2854
+ }
2855
+ catch (err) {
2856
+ const msg = err instanceof Error ? err.message : String(err);
2857
+ return { content: [{ type: "text", text: msg }], isError: true };
2858
+ }
2859
+ });
2691
2860
  // Cleanup on exit
2692
2861
  process.on("SIGINT", async () => {
2693
2862
  liveSchemaRuntime.cache.stop();