total-recall-brain 3.45.0 → 3.46.0

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 (362) hide show
  1. package/bin/total-recall.mjs +4 -2
  2. package/frontend/dist/assets/index-BRYE1jmv.css +1 -0
  3. package/frontend/dist/assets/index-D1goIPjC.js +5598 -0
  4. package/frontend/dist/index.html +2 -2
  5. package/frontend/dist/sw.js +5 -4
  6. package/frontend/src/App.tsx +183 -236
  7. package/frontend/src/api/auth-inventory.ts +62 -0
  8. package/frontend/src/api/memory.ts +13 -8
  9. package/frontend/src/api/plugin-credentials.ts +23 -0
  10. package/frontend/src/api/plugins.ts +37 -53
  11. package/frontend/src/api/workspace-drawers.ts +97 -0
  12. package/frontend/src/components/BrainSelector.tsx +9 -3
  13. package/frontend/src/components/plugins/PluginPanel.tsx +83 -42
  14. package/frontend/src/components/plugins/PluginSettings.tsx +10 -20
  15. package/frontend/src/components/plugins/PluginWorkspace.tsx +367 -0
  16. package/frontend/src/components/plugins/ScopedPluginCommands.tsx +142 -0
  17. package/frontend/src/components/plugins/plugin-frame.ts +44 -33
  18. package/frontend/src/components/plugins/scoped-plugin-operations.ts +28 -0
  19. package/frontend/src/components/workspace/DrawerChat.tsx +110 -0
  20. package/frontend/src/components/workspace/DrawerLayout.tsx +196 -0
  21. package/frontend/src/components/workspace/DrawerMarkup.tsx +49 -0
  22. package/frontend/src/components/workspace/PluginChunkLibrary.tsx +92 -0
  23. package/frontend/src/components/workspace/PluginHome.tsx +76 -0
  24. package/frontend/src/components/workspace/WorkspaceDrawers.tsx +96 -0
  25. package/frontend/src/components/workspace/WorkspacePage.tsx +95 -0
  26. package/frontend/src/components/workspace/usePluginDesign.ts +38 -0
  27. package/frontend/src/index.css +409 -136
  28. package/frontend/src/pages/HelpPage.tsx +15 -46
  29. package/frontend/src/pages/MemoryPage.tsx +19 -36
  30. package/frontend/src/pages/SettingsPage.tsx +1 -1
  31. package/metadata.plugin.schema.json +53 -227
  32. package/package.json +1 -1
  33. package/scaffold/.agent/skills/plugin/SKILL.md +13 -11
  34. package/scaffold/.agent/skills/plugin/evals/README.md +14 -21
  35. package/scaffold/.agent/skills/plugin/evals/cases/01-fabricated-seed.mjs +15 -18
  36. package/scaffold/.agent/skills/plugin/evals/cases/02-reassuring-default.mjs +19 -24
  37. package/scaffold/.agent/skills/plugin/evals/cases/03-declared-template.mjs +12 -20
  38. package/scaffold/.agent/skills/plugin/evals/cases/04-home-collects-credential.mjs +35 -0
  39. package/scaffold/.agent/skills/plugin/evals/cases/05-host-leak-in-scaffold.mjs +8 -28
  40. package/scaffold/.agent/skills/plugin/evals/cases/06-correct-plugin.mjs +85 -47
  41. package/scaffold/.agent/skills/plugin/evals/run.mjs +17 -18
  42. package/scaffold/.agent/skills/plugin/prompts/05-credentials.md +4 -4
  43. package/scaffold/.agent/skills/plugin/prompts/07-scaffold.md +2 -2
  44. package/scaffold/.agent/skills/plugin/prompts/08-verify.md +4 -4
  45. package/scaffold/.agent/skills/plugin/references/anti-patterns.md +2 -2
  46. package/scaffold/.agent/skills/plugin/references/generative-home.md +38 -0
  47. package/scaffold/.agent/skills/plugin/references/scaffold.md +5 -5
  48. package/scaffold/.agent/skills/plugin/references/surfaces.md +13 -4
  49. package/scaffold/.agent/skills/plugin/scripts/record.mjs +75 -153
  50. package/scaffold/.agent/skills/plugin/subagents/plugin-reviewer.md +4 -4
  51. package/scaffold/.agent/skills/total-recall/plugins/auth/DESIGN.md +76 -0
  52. package/scaffold/.agent/skills/total-recall/plugins/auth/README.md +3 -1
  53. package/scaffold/.agent/skills/total-recall/plugins/auth/cli.mjs +20 -15
  54. package/scaffold/.agent/skills/total-recall/plugins/auth/package-lock.json +6 -6
  55. package/scaffold/.agent/skills/total-recall/plugins/auth/package.json +2 -1
  56. package/scaffold/.agent/skills/total-recall/plugins/auth/plugin.json +13 -51
  57. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/access-overview.md +17 -0
  58. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/agent-login.md +20 -0
  59. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/baseline-audit.md +22 -0
  60. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/credential-repository-binding.md +17 -0
  61. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/credential-store-maintenance.md +17 -0
  62. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/dashboard-password.md +18 -0
  63. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/dashboard-sessions.md +18 -0
  64. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/endpoint-probe.md +23 -0
  65. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/google-sign-in.md +21 -0
  66. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/mesh-machines.md +16 -0
  67. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/passkey-enrollment.md +21 -0
  68. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/registered-brains.md +16 -0
  69. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/scoped-access-keys.md +17 -0
  70. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/secret-inventory.md +25 -0
  71. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/chunks/signing-key-rotation.md +22 -0
  72. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/home.js +375 -0
  73. package/scaffold/.agent/skills/total-recall/plugins/automations/{ui/DESIGN.md → DESIGN.md} +32 -21
  74. package/scaffold/.agent/skills/total-recall/plugins/automations/adapters.mjs +17 -1
  75. package/scaffold/.agent/skills/total-recall/plugins/automations/cli.mjs +10 -1
  76. package/scaffold/.agent/skills/total-recall/plugins/automations/package-lock.json +6 -6
  77. package/scaffold/.agent/skills/total-recall/plugins/automations/package.json +4 -3
  78. package/scaffold/.agent/skills/total-recall/plugins/automations/plugin.json +11 -27
  79. package/scaffold/.agent/skills/total-recall/plugins/automations/ui/automations.js +2 -2
  80. package/scaffold/.agent/skills/total-recall/plugins/automations/ui/chunks/control-ledger.md +42 -0
  81. package/scaffold/.agent/skills/total-recall/plugins/automations/ui/chunks/local-inventory-triage.md +17 -0
  82. package/scaffold/.agent/skills/total-recall/plugins/automations/ui/chunks/pending-control.md +39 -0
  83. package/scaffold/.agent/skills/total-recall/plugins/automations/ui/chunks/run-evidence.md +41 -0
  84. package/scaffold/.agent/skills/total-recall/plugins/automations/ui/chunks/schedule-vs-run-evidence.md +17 -0
  85. package/scaffold/.agent/skills/total-recall/plugins/automations/ui/chunks/source-coverage.md +41 -0
  86. package/scaffold/.agent/skills/total-recall/plugins/automations/ui/{card.js → home.js} +32 -27
  87. package/scaffold/.agent/skills/total-recall/plugins/code-quality/DESIGN.md +53 -0
  88. package/scaffold/.agent/skills/total-recall/plugins/code-quality/cli.mjs +23 -0
  89. package/scaffold/.agent/skills/total-recall/plugins/code-quality/commands/run-core.mjs +4 -2
  90. package/scaffold/.agent/skills/total-recall/plugins/code-quality/core/check.mjs +4 -2
  91. package/scaffold/.agent/skills/total-recall/plugins/code-quality/package-lock.json +6 -6
  92. package/scaffold/.agent/skills/total-recall/plugins/code-quality/package.json +2 -1
  93. package/scaffold/.agent/skills/total-recall/plugins/code-quality/plugin.json +40 -40
  94. package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/chunks/config.md +15 -0
  95. package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/chunks/detect.md +15 -0
  96. package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/chunks/gate.md +15 -0
  97. package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/chunks/init.md +15 -0
  98. package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/chunks/report.md +17 -0
  99. package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/chunks/run.md +17 -0
  100. package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/chunks/snapshot.md +15 -0
  101. package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/code-quality-report.mjs +55 -23
  102. package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/home.mjs +214 -0
  103. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/DESIGN.md +146 -0
  104. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/package-lock.json +6 -6
  105. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/package.json +2 -1
  106. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/plugin.json +51 -34
  107. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/src/command.mjs +1 -1
  108. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/create.md +35 -0
  109. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/history.md +35 -0
  110. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/library.md +49 -0
  111. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/list.md +42 -0
  112. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/promote.md +40 -0
  113. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/read.md +25 -0
  114. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/remove.md +26 -0
  115. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/rollback.md +26 -0
  116. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/show.md +53 -0
  117. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/status.md +40 -0
  118. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/test-path.md +38 -0
  119. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/test.md +46 -0
  120. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/chunks/update.md +32 -0
  121. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/home.js +533 -0
  122. package/scaffold/.agent/skills/total-recall/plugins/embeddings/DESIGN.md +110 -0
  123. package/scaffold/.agent/skills/total-recall/plugins/embeddings/package-lock.json +6 -6
  124. package/scaffold/.agent/skills/total-recall/plugins/embeddings/package.json +2 -1
  125. package/scaffold/.agent/skills/total-recall/plugins/embeddings/plugin.json +13 -10
  126. package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/chunks/benchmark.md +49 -0
  127. package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/chunks/coverage.md +53 -0
  128. package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/chunks/models.md +43 -0
  129. package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/chunks/pull.md +41 -0
  130. package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/chunks/status.md +59 -0
  131. package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/home.js +353 -0
  132. package/scaffold/.agent/skills/total-recall/plugins/git/DESIGN.md +31 -0
  133. package/scaffold/.agent/skills/total-recall/plugins/git/README.md +25 -1
  134. package/scaffold/.agent/skills/total-recall/plugins/git/cli.mjs +5 -1
  135. package/scaffold/.agent/skills/total-recall/plugins/git/package-lock.json +6 -6
  136. package/scaffold/.agent/skills/total-recall/plugins/git/package.json +2 -1
  137. package/scaffold/.agent/skills/total-recall/plugins/git/plugin.json +17 -27
  138. package/scaffold/.agent/skills/total-recall/plugins/git/src/ops/commit-memory.mjs +30 -6
  139. package/scaffold/.agent/skills/total-recall/plugins/git/src/ops/fleet.mjs +24 -6
  140. package/scaffold/.agent/skills/total-recall/plugins/git/src/ops/secret-firewall.mjs +33 -7
  141. package/scaffold/.agent/skills/total-recall/plugins/git/src/ops/undo.mjs +29 -5
  142. package/scaffold/.agent/skills/total-recall/plugins/git/src/ops/unmerged.mjs +182 -0
  143. package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/change-comparison.md +27 -0
  144. package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/commit-identity.md +22 -0
  145. package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/create-worktree.md +25 -0
  146. package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/registered-worktrees.md +22 -0
  147. package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/remove-worktree.md +23 -0
  148. package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/repository-ledger.md +25 -0
  149. package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/unmerged-work.md +22 -0
  150. package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/upstream-divergence.md +17 -0
  151. package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/worktree-conflict-triage.md +17 -0
  152. package/scaffold/.agent/skills/total-recall/plugins/git/ui/chunks/worktree-terminal.md +22 -0
  153. package/scaffold/.agent/skills/total-recall/plugins/git/ui/home.js +273 -0
  154. package/scaffold/.agent/skills/total-recall/plugins/mesh/DESIGN.md +35 -0
  155. package/scaffold/.agent/skills/total-recall/plugins/mesh/README.md +4 -5
  156. package/scaffold/.agent/skills/total-recall/plugins/mesh/cli.mjs +9 -3
  157. package/scaffold/.agent/skills/total-recall/plugins/mesh/package-lock.json +6 -6
  158. package/scaffold/.agent/skills/total-recall/plugins/mesh/package.json +2 -1
  159. package/scaffold/.agent/skills/total-recall/plugins/mesh/plugin.json +37 -39
  160. package/scaffold/.agent/skills/total-recall/plugins/mesh/src/cli/mesh.mjs +5 -3
  161. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/active-device-dispatch.md +22 -0
  162. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/control-probe.md +25 -0
  163. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/control-server.md +22 -0
  164. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/credential-readiness.md +23 -0
  165. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/elected-leader.md +22 -0
  166. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/enrollment-key.md +22 -0
  167. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/file-receipt.md +25 -0
  168. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/fleet-execution.md +23 -0
  169. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/fleet-presence.md +23 -0
  170. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/interactive-ssh.md +22 -0
  171. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/local-enrollment.md +23 -0
  172. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/mesh-policy.md +23 -0
  173. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/network-atlas.md +25 -0
  174. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/node-roster.md +26 -0
  175. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/node-selection-proof.md +17 -0
  176. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/owner-observations.md +23 -0
  177. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/peer-path.md +23 -0
  178. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/pinned-leader.md +24 -0
  179. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/reachability-evidence-ladder.md +17 -0
  180. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/recorded-login.md +23 -0
  181. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/remote-execution.md +22 -0
  182. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/chunks/secret-grants.md +26 -0
  183. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/{card.js → home.js} +93 -22
  184. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/DESIGN.md +86 -0
  185. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/README.md +19 -0
  186. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/cli.mjs +5 -1
  187. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/package-lock.json +6 -6
  188. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/package.json +2 -1
  189. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/plugin.json +43 -22
  190. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/src/chat.mjs +80 -0
  191. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/adapter-docs-freshness.md +16 -0
  192. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/chat-handoff.md +26 -0
  193. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/fleet-maintenance.md +21 -0
  194. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/harness-inventory.md +21 -0
  195. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/included-access.md +18 -0
  196. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/included-usage-verification.md +15 -0
  197. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/independent-review.md +17 -0
  198. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/managed-execution.md +20 -0
  199. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/official-documentation.md +18 -0
  200. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/quota-recovery.md +21 -0
  201. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/review-routing-decision.md +16 -0
  202. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/route-work.md +18 -0
  203. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/routing-evidence.md +18 -0
  204. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/chunks/run-ledger.md +18 -0
  205. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/home.js +198 -0
  206. package/scaffold/.agent/skills/total-recall/plugins/openwiki/DESIGN.md +75 -0
  207. package/scaffold/.agent/skills/total-recall/plugins/openwiki/README.md +2 -0
  208. package/scaffold/.agent/skills/total-recall/plugins/openwiki/cli.mjs +17 -14
  209. package/scaffold/.agent/skills/total-recall/plugins/openwiki/package-lock.json +6 -6
  210. package/scaffold/.agent/skills/total-recall/plugins/openwiki/package.json +2 -1
  211. package/scaffold/.agent/skills/total-recall/plugins/openwiki/plugin.json +10 -44
  212. package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/generate.mjs +5 -4
  213. package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/graph.mjs +3 -4
  214. package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/ingest.mjs +23 -18
  215. package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/mesh-vaults.mjs +8 -3
  216. package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/refresh.mjs +6 -3
  217. package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/search.mjs +3 -5
  218. package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/token.mjs +21 -47
  219. package/scaffold/.agent/skills/total-recall/plugins/openwiki/src/upstream-watcher.mjs +17 -6
  220. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/auto-refresh.md +18 -0
  221. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/bootstrap-pages.md +18 -0
  222. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/generate-wiki.md +21 -0
  223. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/generator-settings.md +18 -0
  224. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/host-probe.md +18 -0
  225. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/ingest-preview.md +18 -0
  226. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/link-hygiene.md +21 -0
  227. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/link-topology.md +19 -0
  228. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/passage-search.md +19 -0
  229. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/propagation-plan.md +18 -0
  230. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/provider-credentials.md +18 -0
  231. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/refresh-report.md +18 -0
  232. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/task-evidence.md +22 -0
  233. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/upstream-record.md +18 -0
  234. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/watch-upstream.md +18 -0
  235. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/chunks/wiki-atlas.md +19 -0
  236. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/panel.js +261 -513
  237. package/scaffold/.agent/skills/total-recall/plugins/security/DESIGN.md +84 -0
  238. package/scaffold/.agent/skills/total-recall/plugins/security/README.md +4 -2
  239. package/scaffold/.agent/skills/total-recall/plugins/security/cli.mjs +7 -19
  240. package/scaffold/.agent/skills/total-recall/plugins/security/package-lock.json +6 -6
  241. package/scaffold/.agent/skills/total-recall/plugins/security/package.json +2 -3
  242. package/scaffold/.agent/skills/total-recall/plugins/security/plugin.json +19 -52
  243. package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/device-evidence.md +21 -0
  244. package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/evidence-desk.md +18 -0
  245. package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/guided-device-review.md +17 -0
  246. package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/host-and-network.md +21 -0
  247. package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/https-headers.md +17 -0
  248. package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/mesh-coverage.md +18 -0
  249. package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/private-security-tools.md +16 -0
  250. package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/single-origin-header-check.md +17 -0
  251. package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/source-review.md +21 -0
  252. package/scaffold/.agent/skills/total-recall/plugins/security/ui/chunks/ssh-permission-plan.md +17 -0
  253. package/scaffold/.agent/skills/total-recall/plugins/security/ui/home.js +283 -0
  254. package/scaffold/.agent/skills/total-recall/plugins/ssss/DESIGN.md +93 -0
  255. package/scaffold/.agent/skills/total-recall/plugins/ssss/package-lock.json +2 -2
  256. package/scaffold/.agent/skills/total-recall/plugins/ssss/package.json +2 -1
  257. package/scaffold/.agent/skills/total-recall/plugins/ssss/plugin.json +5 -3
  258. package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/conformance.md +26 -0
  259. package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/registry.md +37 -0
  260. package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/repair.md +42 -0
  261. package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/scaffold.md +33 -0
  262. package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/status.md +43 -0
  263. package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/validate.md +34 -0
  264. package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/validation-diagnostics.md +17 -0
  265. package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/chunks/workspace-registry-preflight.md +17 -0
  266. package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/home.js +348 -0
  267. package/scaffold/.agent/skills/total-recall/references/operations.md +2 -0
  268. package/src/cli/api.mjs +3 -3
  269. package/src/cli/brief.mjs +3 -0
  270. package/src/cli/config.mjs +16 -0
  271. package/src/cli/connect.mjs +2 -7
  272. package/src/cli/plugin/chunks.mjs +145 -0
  273. package/src/cli/plugin/create.mjs +24 -52
  274. package/src/cli/plugin/index.mjs +20 -9
  275. package/src/cli/setup.mjs +2 -9
  276. package/src/cli/start.mjs +1 -0
  277. package/src/cli/startup.mjs +18 -0
  278. package/src/core/app-deploy/design-tokens.mjs +14 -9
  279. package/src/core/app-deploy/ui-elements.mjs +1 -1
  280. package/src/core/brain-registry.mjs +5 -0
  281. package/src/core/brain-updates.mjs +5 -1
  282. package/src/core/daemon-control.mjs +5 -1
  283. package/src/core/dashboard-bundle.mjs +261 -0
  284. package/src/core/ensure-dependencies.mjs +19 -15
  285. package/src/core/memory-brain.mjs +30 -8
  286. package/src/core/plugin-activation.mjs +63 -20
  287. package/src/core/plugin-contracts/{card.mjs → manifest.mjs} +23 -57
  288. package/src/core/plugin-contracts/startup-check.mjs +49 -0
  289. package/src/core/plugin-contracts/ui.mjs +9 -3
  290. package/src/core/plugin-distribution.mjs +6 -6
  291. package/src/core/plugin-lifecycle.mjs +58 -0
  292. package/src/core/plugin-loader.mjs +9 -5
  293. package/src/core/plugin-runner.mjs +21 -10
  294. package/src/core/plugin-startup-checks.mjs +44 -0
  295. package/src/core/plugin-state.mjs +19 -5
  296. package/src/core/plugin-store.mjs +30 -11
  297. package/src/core/project-id.mjs +15 -5
  298. package/src/core/required-plugins.mjs +31 -6
  299. package/src/core/schema.mjs +2 -0
  300. package/src/core/ssss-operation-service.mjs +1 -0
  301. package/src/core/startup-health.mjs +28 -3
  302. package/src/core/testing/plugin-fixture.mjs +22 -21
  303. package/src/core/throttled-fetch.mjs +25 -18
  304. package/src/core/ui-chunk-choice.mjs +77 -0
  305. package/src/core/ui-chunk.registry.json +23 -0
  306. package/src/core/ui-chunks.mjs +434 -0
  307. package/src/core/vault-cache.mjs +58 -59
  308. package/src/core/workspace-compositions.mjs +151 -0
  309. package/src/core/workspace-drawers.mjs +79 -0
  310. package/src/server/api.mjs +4 -27
  311. package/src/server/index.mjs +28 -21
  312. package/src/server/memory-events.mjs +31 -0
  313. package/src/server/plugin-brain-targets.mjs +89 -0
  314. package/src/server/rest.mjs +2 -0
  315. package/src/server/route-inventory.mjs +3 -2
  316. package/src/server/route-manifest.json +52 -4
  317. package/src/server/routes/_shared.mjs +7 -14
  318. package/src/server/routes/brains.mjs +29 -44
  319. package/src/server/routes/dashboard.mjs +26 -0
  320. package/src/server/routes/plugins.mjs +154 -45
  321. package/src/server/routes/ui-chunks.mjs +192 -0
  322. package/frontend/dist/assets/index-DACh1dhx.js +0 -5613
  323. package/frontend/dist/assets/index-DtwsDyFM.css +0 -1
  324. package/frontend/src/components/plugins/card/CardEngine.tsx +0 -108
  325. package/frontend/src/components/plugins/card/CardScenes.tsx +0 -103
  326. package/frontend/src/components/plugins/card/ExecutionPicker.tsx +0 -64
  327. package/frontend/src/components/plugins/card/args.ts +0 -28
  328. package/frontend/src/components/plugins/card/card.css +0 -32
  329. package/frontend/src/components/plugins/card/cli-line.ts +0 -13
  330. package/frontend/src/components/plugins/card/contract.ts +0 -91
  331. package/frontend/src/components/plugins/card/format.ts +0 -49
  332. package/frontend/src/components/plugins/card/runner-context.ts +0 -11
  333. package/frontend/src/components/plugins/card/runner.tsx +0 -43
  334. package/frontend/src/components/plugins/card/theme.ts +0 -35
  335. package/frontend/src/components/plugins/card/use-source.ts +0 -22
  336. package/frontend/src/components/plugins/card/widgets.tsx +0 -94
  337. package/frontend/src/components/plugins/workspace/WorkspaceHost.tsx +0 -23
  338. package/frontend/src/pages/PluginsPage.tsx +0 -1719
  339. package/scaffold/.agent/skills/plugin/evals/cases/04-card-collects-credential.mjs +0 -47
  340. package/scaffold/.agent/skills/plugin/prompts/06-card.md +0 -46
  341. package/scaffold/.agent/skills/plugin/references/card.md +0 -90
  342. package/scaffold/.agent/skills/plugin/subagents/card-designer.md +0 -60
  343. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/DESIGN.md +0 -67
  344. package/scaffold/.agent/skills/total-recall/plugins/auth/ui/card.js +0 -1179
  345. package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/DESIGN.md +0 -32
  346. package/scaffold/.agent/skills/total-recall/plugins/code-quality/ui/card.js +0 -588
  347. package/scaffold/.agent/skills/total-recall/plugins/composable-cli/ui/card.js +0 -575
  348. package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/DESIGN.md +0 -32
  349. package/scaffold/.agent/skills/total-recall/plugins/embeddings/ui/card.js +0 -482
  350. package/scaffold/.agent/skills/total-recall/plugins/git/ui/DESIGN.md +0 -100
  351. package/scaffold/.agent/skills/total-recall/plugins/git/ui/card.js +0 -637
  352. package/scaffold/.agent/skills/total-recall/plugins/mesh/ui/DESIGN.md +0 -217
  353. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/DESIGN.md +0 -32
  354. package/scaffold/.agent/skills/total-recall/plugins/meta-harness/ui/card.js +0 -1276
  355. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/DESIGN.md +0 -45
  356. package/scaffold/.agent/skills/total-recall/plugins/openwiki/ui/card.js +0 -1401
  357. package/scaffold/.agent/skills/total-recall/plugins/security/scripts/build-ui.mjs +0 -4
  358. package/scaffold/.agent/skills/total-recall/plugins/security/ui/DESIGN.md +0 -41
  359. package/scaffold/.agent/skills/total-recall/plugins/security/ui/card.js +0 -396
  360. package/scaffold/.agent/skills/total-recall/plugins/security/ui/panel.js +0 -98
  361. package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/DESIGN.md +0 -15
  362. package/scaffold/.agent/skills/total-recall/plugins/ssss/ui/card.js +0 -182
@@ -0,0 +1,21 @@
1
+ ---
2
+ type: ui-chunk:chunk
3
+ plugin: meta-harness
4
+ id: fleet-maintenance
5
+ title: Maintain the harness registry
6
+ description: Review upstream versions, register supported adapters and explicitly maintain integrations.
7
+ timestamp: "2026-11-08T09:34:00Z"
8
+ intents: [check harness updates, inspect changelog, configure a custom harness, maintain fleet integrations]
9
+ surfaces: [page]
10
+ operations: [upstream, changelog, adapter, setup, maintenance]
11
+ data: ["adapter:/active/0/id"]
12
+ ---
13
+
14
+ <section>
15
+ <h2>Maintain the harness registry</h2>
16
+ <dl>
17
+ <dt><strong>Release evidence</strong></dt><dd>Check <code>upstream</code> and request <code>changelog</code> where an adapter supports it.</dd>
18
+ <dt><strong>Adapter declarations</strong></dt><dd>Inspect the active registry with <code>adapter list</code>. Register a reviewed definition through the same owner command.</dd>
19
+ <dt><strong>Integration work</strong></dt><dd>Choose a host before using <code>setup</code> or <code>maintenance</code> and review the resulting receipts.</dd>
20
+ </dl>
21
+ </section>
@@ -0,0 +1,21 @@
1
+ ---
2
+ type: ui-chunk:chunk
3
+ plugin: meta-harness
4
+ id: harness-inventory
5
+ title: Inspect harness availability
6
+ description: Compare registered adapters, selected nodes, observed installations and adoption evidence.
7
+ timestamp: "2026-11-08T09:34:00Z"
8
+ intents: [inspect harness inventory, check local agents, compare mesh harness availability, verify managed adoption]
9
+ surfaces: [page, right]
10
+ operations: [catalog, status, nodes, inspect, adoption]
11
+ data: ["catalog:/permissions"]
12
+ ---
13
+
14
+ <section style="border-inline-start:2px solid var(--color-signal,#38bdf8);padding-inline-start:1rem">
15
+ <h2>Inspect harness availability</h2>
16
+ <dl>
17
+ <dt><strong>Registry</strong></dt><dd><code>catalog</code> lists the configured adapters and supported command effects.</dd>
18
+ <dt><strong>Selected host</strong></dt><dd><code>nodes</code> lists execution targets. Use <code>inspect</code> or <code>status</code> for observed binary and login state on a specific node.</dd>
19
+ <dt><strong>Managed adoption</strong></dt><dd><code>adoption</code> brings native gate activity and actual managed run receipts together.</dd>
20
+ </dl>
21
+ </section>
@@ -0,0 +1,18 @@
1
+ ---
2
+ type: ui-chunk:chunk
3
+ plugin: meta-harness
4
+ id: included-access
5
+ title: Inspect included access
6
+ description: Review the saved usage policy and the separate approval paths for provider bindings.
7
+ timestamp: "2026-11-08T09:34:00Z"
8
+ intents: [check included usage policy, inspect harness billing bindings, verify approved connector access]
9
+ surfaces: [page, right]
10
+ operations: [included-status, included-enforce, included-bind-claude, included-bind-claude-plan, openrouter-bind]
11
+ data: ["included-status:/enabled", "included-status:/policyVersion"]
12
+ ---
13
+
14
+ <section>
15
+ <h2>Inspect included access</h2>
16
+ <p>Read <code>included-status</code> to check the saved policy. The policy distinguishes included subscription access from approved provider bindings.</p>
17
+ <p>Use the owning CLI for an explicit enforcement or binding change. Validate billing evidence and use the Auth store for credential references.</p>
18
+ </section>
@@ -0,0 +1,15 @@
1
+ ---
2
+ type: ui-chunk:chunk
3
+ plugin: meta-harness
4
+ id: included-usage-verification
5
+ title: Verify included harness access before dispatch
6
+ description: Read the registered adapters and included-usage status to check whether a proposed harness may run under existing access.
7
+ timestamp: "2026-11-08T23:12:00Z"
8
+ intents: [verify included access before dispatch, find harnesses covered by current access, distinguish subscription use from provider spend]
9
+ surfaces: [page]
10
+ operations: [catalog, included-status, quota]
11
+ ---
12
+ <section>
13
+ <h2>Check which harness can run under existing access</h2>
14
+ <ol><li>Identify the intended adapter in the harness catalog.</li><li>Read included usage and quota for that adapter.</li><li>Queue or reroute when the permitted adapter is unavailable.</li></ol>
15
+ </section>
@@ -0,0 +1,17 @@
1
+ ---
2
+ type: ui-chunk:chunk
3
+ plugin: meta-harness
4
+ id: independent-review
5
+ title: Review a real change
6
+ description: Select the target diff and known author for an independent Metaharness review.
7
+ timestamp: "2026-11-08T09:34:00Z"
8
+ intents: [run independent code review, review a diff, attach review evidence to a thread]
9
+ surfaces: [page]
10
+ operations: [review]
11
+ ---
12
+
13
+ <section style="border-block-start:1px solid var(--color-line,#334155)">
14
+ <h2>Review a real change</h2>
15
+ <p>Select a diff, staged changes or a supported review target. Supply the known author and use the owner’s independent reviewer selection.</p>
16
+ <p>Attach the resulting receipt to its work thread when one is available. Read the verdict and any findings with their source locations.</p>
17
+ </section>
@@ -0,0 +1,20 @@
1
+ ---
2
+ type: ui-chunk:chunk
3
+ plugin: meta-harness
4
+ id: managed-execution
5
+ title: Prepare managed execution
6
+ description: Choose a harness, node, workspace and allowed effects before running a managed command.
7
+ timestamp: "2026-11-08T09:34:00Z"
8
+ intents: [run a plugin command through a harness, dispatch a managed task, maintain an agent runtime]
9
+ surfaces: [page]
10
+ operations: [run-command, runtime, dispatch]
11
+ ---
12
+
13
+ <section>
14
+ <h2>Prepare managed execution</h2>
15
+ <ol>
16
+ <li>Choose a verified node and its absolute workspace.</li>
17
+ <li>Use <code>run-command</code> for a declared plugin operation, <code>dispatch</code> for a task request, or <code>runtime</code> for an allowed maintenance action.</li>
18
+ <li>Submit the approved request through the owner. Read the returned exit status and native tool evidence before treating the task as finished.</li>
19
+ </ol>
20
+ </section>
@@ -0,0 +1,18 @@
1
+ ---
2
+ type: ui-chunk:chunk
3
+ plugin: meta-harness
4
+ id: official-documentation
5
+ title: Read verified harness documentation
6
+ description: Find approved sources and inspect cached documentation integrity and freshness.
7
+ timestamp: "2026-11-08T09:34:00Z"
8
+ intents: [find harness documentation, search official command docs, inspect documentation cache freshness]
9
+ surfaces: [page, right]
10
+ operations: [docs-status, docs-sources, docs-read, docs-search, docs-refresh, docs-ensure]
11
+ data: ["docs-status:/ok", "docs-sources:/sources"]
12
+ ---
13
+
14
+ <article>
15
+ <h2>Read verified harness documentation</h2>
16
+ <p>Start with <code>docs-sources</code> for the approved official sources. Use <code>docs-status</code> to check the local copy, then <code>docs-search</code> and <code>docs-read</code> to locate the relevant section.</p>
17
+ <p>Use <code>docs-ensure</code> to refresh missing or stale pages, or <code>docs-refresh</code> to request a refresh. Verify the result through the cache status.</p>
18
+ </article>
@@ -0,0 +1,21 @@
1
+ ---
2
+ type: ui-chunk:chunk
3
+ plugin: meta-harness
4
+ id: quota-recovery
5
+ title: Inspect queued work and quota
6
+ description: Review observed usage and decide whether to retry or cancel a queued job.
7
+ timestamp: "2026-11-08T09:34:00Z"
8
+ intents: [show quota wait queue, inspect harness limits, retry after quota resets, cancel queued job]
9
+ surfaces: [page, right]
10
+ operations: [quota, usage-queue, usage-retry, usage-cancel]
11
+ data: ["usage-queue:/ok"]
12
+ ---
13
+
14
+ <section>
15
+ <h2>Inspect queued work and quota</h2>
16
+ <ol>
17
+ <li>Use <code>quota</code> for observed limits on the selected host.</li>
18
+ <li>Use <code>usage-queue</code> to find jobs waiting for included capacity.</li>
19
+ <li>After reviewing the selected job, use <code>usage-retry</code> for an explicit retry or <code>usage-cancel</code> to stop waiting.</li>
20
+ </ol>
21
+ </section>
@@ -0,0 +1,16 @@
1
+ ---
2
+ type: ui-chunk:chunk
3
+ plugin: meta-harness
4
+ id: review-routing-decision
5
+ title: Explain why a harness was selected
6
+ description: Review the selected adapter, classifier source and surrounding routing evidence before committing a managed run.
7
+ timestamp: "2026-11-08T23:12:00Z"
8
+ intents: [explain a harness routing choice, review selected adapter before execution, compare route evidence with task needs]
9
+ surfaces: [page]
10
+ operations: [route, benchmarks, learn]
11
+ data: ["route:/selected", "route:/classifier/source", "benchmarks:/synced", "learn:/totalHistoryRuns"]
12
+ ---
13
+ <section>
14
+ <h2>Review the route decision</h2>
15
+ <p>Compare the chosen adapter with the classifier source and available history. A route receipt records the decision. Inspect run evidence separately after execution.</p>
16
+ </section>
@@ -0,0 +1,18 @@
1
+ ---
2
+ type: ui-chunk:chunk
3
+ plugin: meta-harness
4
+ id: route-work
5
+ title: Preview task routing
6
+ description: Compare harness choice and workflow stages before approving managed execution.
7
+ timestamp: "2026-11-08T09:34:00Z"
8
+ intents: [preview harness route, decompose a task, plan a coordinated run, inspect selected harness]
9
+ surfaces: [page]
10
+ operations: [route, decompose, coordinate, orchestrate]
11
+ data: ["route:/selected", "route:/classifier/source"]
12
+ ---
13
+
14
+ <section>
15
+ <h2>Preview task routing</h2>
16
+ <p><code>route</code> explains the selected harness and classification source. <code>decompose</code> lays out the work stages.</p>
17
+ <p>Use <code>coordinate</code> or <code>orchestrate</code> to inspect the roles and candidate assignments. Add <code>--execute</code> only after approving the plan, workspace and gates.</p>
18
+ </section>
@@ -0,0 +1,18 @@
1
+ ---
2
+ type: ui-chunk:chunk
3
+ plugin: meta-harness
4
+ id: routing-evidence
5
+ title: Review routing evidence
6
+ description: Compare sourced benchmark metadata with observed local run history and alert outcomes.
7
+ timestamp: "2026-11-08T09:34:00Z"
8
+ intents: [review harness benchmarks, inspect routing scorecard, check quota alerts, inspect run history]
9
+ surfaces: [page, right]
10
+ operations: [benchmarks, learn, alerts]
11
+ data: ["benchmarks:/synced", "learn:/totalHistoryRuns"]
12
+ ---
13
+
14
+ <section style="border-inline-start:2px solid var(--color-signal,#38bdf8);padding-inline-start:1rem">
15
+ <h2>Review routing evidence</h2>
16
+ <p><code>benchmarks</code> separates sourced figures from the pass rates measured on this machine. <code>learn</code> summarizes the managed run receipts and identifies recurring limits.</p>
17
+ <p>Use <code>alerts</code> for an explicit check of the operator alert path. Review delivery evidence through the owning alert plugin.</p>
18
+ </section>
@@ -0,0 +1,18 @@
1
+ ---
2
+ type: ui-chunk:chunk
3
+ plugin: meta-harness
4
+ id: run-ledger
5
+ title: Follow managed work
6
+ description: Inspect work threads and track Metaharness-owned processes using recorded identities.
7
+ timestamp: "2026-11-08T09:34:00Z"
8
+ intents: [inspect managed process, follow a work thread, find a run receipt, check agent progress]
9
+ surfaces: [page, right]
10
+ operations: [threads, process]
11
+ data: ["process:/ok"]
12
+ ---
13
+
14
+ <section>
15
+ <h2>Follow managed work</h2>
16
+ <p>Use <code>threads list</code> to find tracked work. Use <code>process list</code> to find Metaharness-owned processes and select a run by its recorded ID.</p>
17
+ <p>Inspect the selected process status or log in the owner. Keep the run receipt with the relevant work thread.</p>
18
+ </section>
@@ -0,0 +1,198 @@
1
+ const template = document.createElement('template');
2
+ template.innerHTML = `
3
+ <style>
4
+ :host {
5
+ display: block;
6
+ color: var(--color-text, #f1f5f9);
7
+ font: 14px/1.5 var(--typography-body-font-family, system-ui, sans-serif);
8
+ }
9
+ * { box-sizing: border-box; }
10
+ .home {
11
+ background: var(--color-canvas, #0c1427);
12
+ border: 1px solid var(--color-line, #334155);
13
+ border-radius: var(--radius-frame, 8px);
14
+ padding: var(--spacing-inset, 16px);
15
+ }
16
+ header, .actions {
17
+ display: flex;
18
+ justify-content: space-between;
19
+ align-items: start;
20
+ flex-wrap: wrap;
21
+ gap: var(--spacing-row, 12px);
22
+ }
23
+ h2 {
24
+ font-size: var(--typography-title-font-size, 18px);
25
+ font-weight: var(--typography-title-font-weight, 650);
26
+ margin: 0;
27
+ }
28
+ p { margin: 0.25rem 0; }
29
+ .route {
30
+ margin-block: var(--spacing-row, 12px);
31
+ border-inline-start: 2px solid var(--color-signal, #38bdf8);
32
+ background: var(--color-surface, #1e293b);
33
+ padding: 0.6rem 0.75rem;
34
+ }
35
+ .label {
36
+ color: var(--color-signal, #38bdf8);
37
+ font: 600 11px/1.4 var(--typography-label-font-family, ui-monospace, monospace);
38
+ letter-spacing: 0.08em;
39
+ text-transform: uppercase;
40
+ }
41
+ .subtle { color: var(--color-muted, #94a3b8); }
42
+ [data-error] { color: var(--color-danger, #ef4444); }
43
+ .fields {
44
+ display: grid;
45
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr);
46
+ gap: var(--spacing-row, 12px);
47
+ }
48
+ label { display: block; font-weight: 600; }
49
+ input, select, button {
50
+ background: var(--color-surface, #1e293b);
51
+ border: 1px solid var(--color-line, #334155);
52
+ border-radius: var(--radius-frame, 8px);
53
+ color: inherit;
54
+ font: inherit;
55
+ min-height: 44px;
56
+ padding: 0.4rem 0.7rem;
57
+ }
58
+ input, select { width: 100%; min-width: 0; margin-top: 0.3rem; }
59
+ button { cursor: pointer; }
60
+ button:disabled { cursor: default; opacity: 0.55; }
61
+ button:focus-visible, input:focus-visible, select:focus-visible {
62
+ outline: 2px solid var(--color-signal, #38bdf8);
63
+ outline-offset: 2px;
64
+ }
65
+ .actions { align-items: center; margin-top: var(--spacing-row, 12px); }
66
+ #save { border-color: var(--color-signal, #38bdf8); }
67
+ @media (max-width: 530px) { .fields { grid-template-columns: 1fr; } }
68
+ </style>
69
+ <section class="home" aria-labelledby="default-title">
70
+ <header>
71
+ <div>
72
+ <h2 id="default-title">Default Chat harness</h2>
73
+ <p class="subtle">Use this destination with any brain selection in the Chat drawer.</p>
74
+ </div>
75
+ <button type="button" id="refresh">Reload settings</button>
76
+ </header>
77
+ <div class="route" aria-live="polite">
78
+ <div class="label">Saved handoff</div>
79
+ <strong id="saved">Reading Chat settings…</strong>
80
+ <p class="subtle" id="mode"></p>
81
+ </div>
82
+ <div class="fields">
83
+ <label>Registered harness
84
+ <select id="adapter" disabled><option value="">Choose a harness</option></select>
85
+ </label>
86
+ <label>Optional launch URL
87
+ <input id="url" type="text" inputmode="url" autocomplete="off" maxlength="2048" disabled>
88
+ </label>
89
+ </div>
90
+ <p class="subtle">Use a trusted HTTPS page or a supported native Chat link.</p>
91
+ <div class="actions">
92
+ <p id="notice" class="subtle" role="status"></p>
93
+ <button type="button" id="save" disabled>Save default</button>
94
+ </div>
95
+ </section>
96
+ `;
97
+
98
+ const adapterId = /^[a-z][a-z0-9-]{0,63}$/;
99
+ const nativeDraft = /^codex:\/\/threads\/new(?:\?|$)/;
100
+
101
+ class MetaharnessHome extends HTMLElement {
102
+ #target = null;
103
+ #working = false;
104
+
105
+ constructor() {
106
+ super();
107
+ this.attachShadow({ mode: 'open' }).append(template.content.cloneNode(true));
108
+ this.#field('refresh').addEventListener('click', () => void this.load());
109
+ this.#field('save').addEventListener('click', () => void this.#save());
110
+ this.#field('adapter').addEventListener('change', () => {
111
+ this.#fillUrl();
112
+ this.#syncControls();
113
+ });
114
+ }
115
+
116
+ #field(id) {
117
+ return this.shadowRoot.getElementById(id);
118
+ }
119
+
120
+ #notice(text, error = false) {
121
+ const notice = this.#field('notice');
122
+ notice.textContent = text;
123
+ notice.toggleAttribute('data-error', error);
124
+ }
125
+
126
+ #syncControls() {
127
+ const adapter = this.#field('adapter');
128
+ const locked = this.#working || !this.#target;
129
+ adapter.disabled = locked;
130
+ this.#field('url').disabled = locked || !adapter.value;
131
+ this.#field('save').disabled = locked || !adapter.value;
132
+ this.#field('refresh').disabled = this.#working;
133
+ }
134
+
135
+ #fillUrl() {
136
+ const { harness, href } = this.#target || {};
137
+ this.#field('url').value = harness?.id === this.#field('adapter').value && typeof href === 'string' && !nativeDraft.test(href)
138
+ ? href : '';
139
+ }
140
+
141
+ #showTarget(target) {
142
+ if (target?.ok !== true || typeof target.configured !== 'boolean' || !Array.isArray(target.choices)) throw new Error('Invalid Chat target');
143
+ const choices = target.choices.filter(choice => typeof choice?.id === 'string' &&
144
+ adapterId.test(choice.id) && typeof choice.name === 'string');
145
+ const selected = choices.find(choice => choice.id === target.harness?.id);
146
+ if (target.configured && !selected) throw new Error('Invalid saved Chat adapter');
147
+ this.#target = { choices, harness: selected, href: target.href };
148
+ const picker = this.#field('adapter');
149
+ picker.replaceChildren(new Option('Choose a harness', ''), ...choices.map(choice => new Option(choice.name, choice.id)));
150
+ picker.value = selected?.id || '';
151
+ this.#fillUrl();
152
+ this.#field('saved').textContent = selected?.name || 'Choose a default harness';
153
+ this.#field('mode').textContent = !selected
154
+ ? target.warning || `${choices.length} registered harnesses`
155
+ : nativeDraft.test(target.href) ? 'Opens a reviewable native draft'
156
+ : target.href ? 'Opens the saved destination' : 'Copy context from the Chat drawer';
157
+ }
158
+
159
+ async load() {
160
+ if (this.#working) return;
161
+ this.#working = true;
162
+ this.#syncControls();
163
+ this.#notice('Reading Chat settings…');
164
+ try {
165
+ this.#showTarget(await this.host.run('chat-target'));
166
+ this.#notice('');
167
+ } catch {
168
+ this.#target = null;
169
+ this.#field('saved').textContent = 'Chat settings unavailable';
170
+ this.#field('mode').textContent = '';
171
+ this.#notice('Reload to try the owner read again.', true);
172
+ } finally {
173
+ this.#working = false;
174
+ this.#syncControls();
175
+ }
176
+ }
177
+
178
+ async #save() {
179
+ const id = this.#field('adapter').value;
180
+ if (this.#working || !this.#target?.choices.some(choice => choice.id === id)) return;
181
+ const url = this.#field('url').value.trim();
182
+ this.#working = true;
183
+ this.#syncControls();
184
+ this.#notice('Saving Chat default…');
185
+ try {
186
+ const target = await this.host.run('chat-default', [id, ...(url ? ['--url', url] : [])]);
187
+ this.#showTarget(target);
188
+ this.#notice('Chat default saved.');
189
+ } catch {
190
+ this.#notice('Could not save the default. Check the harness and launch URL.', true);
191
+ } finally {
192
+ this.#working = false;
193
+ this.#syncControls();
194
+ }
195
+ }
196
+ }
197
+
198
+ if (!customElements.get('tr-metaharness-home')) customElements.define('tr-metaharness-home', MetaharnessHome);
@@ -0,0 +1,75 @@
1
+ ---
2
+ name: OpenWiki
3
+ description: A warm reference atlas for repository documentation, evidence, and links.
4
+ colors:
5
+ background: "#f9f1e3"
6
+ surface: "#fff9ee"
7
+ text: "#302519"
8
+ muted: "#6d5741"
9
+ outline: "#cbb497"
10
+ primary: "#8d3e10"
11
+ on-primary: "#fff9ee"
12
+ error: "#9b2a20"
13
+ typography:
14
+ heading:
15
+ fontFamily: "Newsreader, Georgia, serif"
16
+ fontWeight: 600
17
+ fontSize: 1.8rem
18
+ body:
19
+ fontFamily: "DM Sans, system-ui, sans-serif"
20
+ fontSize: 1rem
21
+ lineHeight: 1.55
22
+ source:
23
+ fontFamily: "DM Mono, ui-monospace, monospace"
24
+ fontSize: 0.8rem
25
+ lineHeight: 1.5
26
+ spacing:
27
+ sm: 0.65rem
28
+ md: 1rem
29
+ lg: 1.5rem
30
+ rounded:
31
+ panel: 0.45rem
32
+ control: 0.3rem
33
+ components:
34
+ atlas-intro:
35
+ backgroundColor: "{colors.surface}"
36
+ borderColor: "{colors.outline}"
37
+ borderWidth: 1px
38
+ borderStyle: solid
39
+ padding: "{spacing.md}"
40
+ rounded: "{rounded.panel}"
41
+ ---
42
+
43
+ # OpenWiki
44
+
45
+ ## Overview
46
+
47
+ OpenWiki should read like a maintained reference atlas. The index establishes which pages exist. Search moves directly to evidence with its source. The topology shows how those pages refer to one another. Repository maintenance belongs in separate blocks.
48
+
49
+ ## Colors
50
+
51
+ Warm ivory is the background and pale cream holds content. Brown-black carries the text. Burnt orange marks active controls and relationships. Use red for a failed read and accompany it with a message.
52
+
53
+ ## Typography
54
+
55
+ Use Newsreader for headings, DM Sans for body text, and DM Mono for paths and version labels. Give quotations space to wrap. Keep source lines beside their passages.
56
+
57
+ ## Layout
58
+
59
+ Give search the full width, then place the page index beside the link topology. Stack these regions at narrow widths. Let file names and section labels wrap without obscuring line numbers.
60
+
61
+ ## Elevation & Depth
62
+
63
+ Use hairline rules between index entries. A lightly contrasting reading surface is enough to separate passages from metadata.
64
+
65
+ ## Shapes
66
+
67
+ Use restrained corners on the atlas and controls. Show links as direct relationships between page labels.
68
+
69
+ ## Components
70
+
71
+ The atlas introduction carries the `atlas-intro` tokens. The native panel holds recorded upstream status, workspace evidence search, a page list, and the live link topology. Each independent block explains one operator workflow.
72
+
73
+ ## Do's and Don'ts
74
+
75
+ Use explicit search, refresh, and topology controls with visible focus and at least 44 pixels of target height. Keep motion still. Distinguish an empty read from a failed one, and show recorded versions with their freshness. Keep generated documentation, provider checks, and credential entry outside the Home load.
@@ -30,6 +30,8 @@ total-recall openwiki bootstrap --brain /absolute/path/to/brain \
30
30
  - **CLI Command**: `npx total-recall openwiki`
31
31
  - **UI**: `ui/panel.js` custom element with DESIGN.md tokens
32
32
 
33
+ Open **OpenWiki** from the dashboard's Plugins folder to search workspace passages, browse indexed Markdown pages, and inspect the links between them. The atlas reads local wiki files and recorded upstream status. Customize its theme in the root `DESIGN.md`. The 16 owner blocks in `ui/chunks/` can be composed into pages or drawers. Use Settings for write-only credential entry or run `total-recall openwiki token set <provider> --stdin` in the terminal.
34
+
33
35
  ## Use it two ways
34
36
 
35
37
  This plugin is a reusable brick, so a new project does not start from zero.
@@ -7,7 +7,7 @@ import fs from "node:fs";
7
7
  import path from "node:path";
8
8
  import { runBootstrapCommand } from './src/bootstrap.mjs';
9
9
  import { describeRetention, hasWiki, isDue, readProjects, refreshProject, refreshProjectAsync, resolveKey, staleness } from './src/refresh.mjs';
10
- import { watchUpstream, propagateUpdates, readUpstreamState } from './src/upstream-watcher.mjs';
10
+ import { watchUpstream, propagateUpdates, readUpstreamState, bundledGeneratorVersion } from './src/upstream-watcher.mjs';
11
11
  import { loadOpenWikiConfig, setOpenWikiConfigValue, resetOpenWikiConfig, resolveConfigPath, ALLOWED_CONFIG_KEYS, ALLOWED_PROVIDERS } from './src/config.mjs';
12
12
  import { discoverAllHubs } from './src/mesh-vaults.mjs';
13
13
  import { searchWikiHubs } from './src/search.mjs';
@@ -345,22 +345,17 @@ async function tokenCommand(args) {
345
345
  const icon = t.configured ? '✔' : '✖';
346
346
  console.log(` ${icon} ${provider.padEnd(12)} : ${t.key} (${t.status})`);
347
347
  }
348
- console.log('\nTo set a token: total-recall openwiki token set <openrouter|google> <key>');
349
- console.log('Or via stdin: echo "$KEY" | total-recall openwiki token set <provider> --stdin\n');
348
+ console.log('\nTo set a token: total-recall openwiki token set <openrouter|google> --stdin\n');
350
349
  }
351
350
  return;
352
351
  }
353
352
 
354
353
  if (verb === 'set') {
355
- const clean = args.filter((a) => !a.startsWith('--'));
356
- const provider = clean[1];
357
- let value = clean[2];
358
- if (args.includes('--stdin')) {
359
- value = fs.readFileSync(0, 'utf8').trim();
360
- }
361
- if (!provider || !value) {
362
- throw new Error('Provider and secret value required: openwiki token set <provider> <value> (or --stdin)');
354
+ const [, provider, ...extra] = args.filter(arg => arg !== '--json' && arg !== '--stdin');
355
+ if (!args.includes('--stdin') || !provider || extra.length) {
356
+ throw new Error('Use openwiki token set <provider> --stdin with the credential on standard input');
363
357
  }
358
+ const value = fs.readFileSync(0, 'utf8');
364
359
  const res = setTokenValue(provider, value);
365
360
  if (json) console.log(JSON.stringify(res, null, 2));
366
361
  else console.log(`✔ ${res.message}`);
@@ -457,8 +452,14 @@ async function generateCommand(args) {
457
452
  import { runOpenWikiIngest } from "./src/ingest.mjs";
458
453
 
459
454
  async function ingestCommand(args) {
460
- const result = await runOpenWikiIngest(args);
461
- if (!result.ok) {
455
+ const json = args.includes('--json');
456
+ try {
457
+ const result = await runOpenWikiIngest(args);
458
+ if (json && !args.some(arg => arg === '--help' || arg === '-h')) console.log(JSON.stringify(result));
459
+ if (!result.ok) process.exitCode = 1;
460
+ } catch (error) {
461
+ if (json) console.log(JSON.stringify({ ok: false, error: error.message }));
462
+ else console.error(`OpenWiki ingest error: ${error.message}`);
462
463
  process.exitCode = 1;
463
464
  }
464
465
  }
@@ -675,6 +676,7 @@ export async function run(argv = process.argv) {
675
676
  const status = {
676
677
  plugin: "openwiki",
677
678
  implemented: Object.keys(IMPLEMENTED),
679
+ generatorVersion: bundledGeneratorVersion(),
678
680
  upstream: {
679
681
  recordedVersion: upstream.currentRecordedVersion,
680
682
  latestVersion: upstream.latestKnownVersion,
@@ -685,6 +687,7 @@ export async function run(argv = process.argv) {
685
687
  if (json) console.log(JSON.stringify(status, null, 2));
686
688
  else {
687
689
  console.log(`OpenWiki: implemented subcommands: ${status.implemented.join(", ")}`);
690
+ console.log(`Bundled generator: ${status.generatorVersion || 'unavailable'}`);
688
691
  console.log(`Upstream Status: recorded v${status.upstream.recordedVersion}, latest v${status.upstream.latestVersion}`);
689
692
  }
690
693
  return;
@@ -709,7 +712,7 @@ export async function run(argv = process.argv) {
709
712
  Extract knowledge graph topology, nodes, and inter-hub links
710
713
  generate [--repo <name>] [--force] [--dry-run] [--node <node>] [--json]
711
714
  Targeted on-demand documentation generation
712
- token [status|set <provider> <value>] [--stdin] [--json]
715
+ token [status|set <provider> --stdin] [--json]
713
716
  Check or securely configure Total Recall secrets store keys
714
717
  lint [--all-vaults] [--node <node>] [--json]
715
718
  Validate link integrity, dead targets, and orphaned hubs
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "tr-plugin-openwiki",
3
- "version": "0.1.11",
3
+ "version": "0.2.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "tr-plugin-openwiki",
9
- "version": "0.1.11",
9
+ "version": "0.2.0",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
12
  "@gregiteen/ssss-cli": "0.14.5"
13
13
  },
14
14
  "devDependencies": {
15
- "total-recall-brain": "3.44.0"
15
+ "total-recall-brain": "3.45.0"
16
16
  }
17
17
  },
18
18
  "node_modules/@alcalzone/ansi-tokenize": {
@@ -5529,9 +5529,9 @@
5529
5529
  }
5530
5530
  },
5531
5531
  "node_modules/total-recall-brain": {
5532
- "version": "3.44.0",
5533
- "resolved": "https://registry.npmjs.org/total-recall-brain/-/total-recall-brain-3.44.0.tgz",
5534
- "integrity": "sha512-VNPaIO9zsSwoxAsJ5ByIQBP9zPpLq4RiQO7Vrex4rBOHFQJT50P7utcZiLMSZTyZJU4C/m5uB8qTCSBMp6+l6Q==",
5532
+ "version": "3.45.0",
5533
+ "resolved": "https://registry.npmjs.org/total-recall-brain/-/total-recall-brain-3.45.0.tgz",
5534
+ "integrity": "sha512-HDYfROazZbsLHQsFPnlBcSpe1HL1QEi7JG8x/eNRUI06RxVQsZWl8LwBo2lTWjWRDrKmCy7BUmSXQDuWF3lrEw==",
5535
5535
  "dev": true,
5536
5536
  "license": "MIT",
5537
5537
  "workspaces": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tr-plugin-openwiki",
3
- "version": "0.1.11",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "description": "Multi-repo knowledge graph and documentation wiki engine for Total Recall",
6
6
  "scripts": {
@@ -12,6 +12,7 @@
12
12
  "cli.mjs",
13
13
  "plugin.json",
14
14
  "README.md",
15
+ "DESIGN.md",
15
16
  "LICENSE",
16
17
  "ui/",
17
18
  "src/",