@synap-core/cli 1.10.0 → 1.12.2

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 (461) hide show
  1. package/README.md +23 -198
  2. package/dist/build-info.json +6 -0
  3. package/dist/commands/agent-run.js +3 -2
  4. package/dist/commands/agent-run.js.map +1 -1
  5. package/dist/commands/agents.d.ts +33 -17
  6. package/dist/commands/agents.js +203 -237
  7. package/dist/commands/agents.js.map +1 -1
  8. package/dist/commands/app.d.ts +143 -0
  9. package/dist/commands/app.js +523 -0
  10. package/dist/commands/app.js.map +1 -0
  11. package/dist/commands/automate.d.ts +21 -0
  12. package/dist/commands/automate.js +42 -0
  13. package/dist/commands/automate.js.map +1 -0
  14. package/dist/commands/automation-schema.test.d.ts +16 -0
  15. package/dist/commands/automation-schema.test.js +77 -0
  16. package/dist/commands/automation-schema.test.js.map +1 -0
  17. package/dist/commands/automation.d.ts +12 -0
  18. package/dist/commands/automation.js +80 -35
  19. package/dist/commands/automation.js.map +1 -1
  20. package/dist/commands/bridge-setup.d.ts +14 -1
  21. package/dist/commands/bridge-setup.js +392 -128
  22. package/dist/commands/bridge-setup.js.map +1 -1
  23. package/dist/commands/cap-connections.d.ts +4 -4
  24. package/dist/commands/cap-connections.js +14 -14
  25. package/dist/commands/cap-connections.js.map +1 -1
  26. package/dist/commands/capability.d.ts +2 -0
  27. package/dist/commands/capability.js +297 -176
  28. package/dist/commands/capability.js.map +1 -1
  29. package/dist/commands/catalog.d.ts +275 -0
  30. package/dist/commands/catalog.js +481 -0
  31. package/dist/commands/catalog.js.map +1 -0
  32. package/dist/commands/cell.d.ts +155 -8
  33. package/dist/commands/cell.js +416 -40
  34. package/dist/commands/cell.js.map +1 -1
  35. package/dist/commands/centrality.js +3 -14
  36. package/dist/commands/centrality.js.map +1 -1
  37. package/dist/commands/connect.d.ts +38 -13
  38. package/dist/commands/connect.js +68 -167
  39. package/dist/commands/connect.js.map +1 -1
  40. package/dist/commands/connections.d.ts +3 -2
  41. package/dist/commands/connections.js +95 -25
  42. package/dist/commands/connections.js.map +1 -1
  43. package/dist/commands/context.js +9 -2
  44. package/dist/commands/context.js.map +1 -1
  45. package/dist/commands/data-extra.d.ts +34 -0
  46. package/dist/commands/data-extra.js +198 -25
  47. package/dist/commands/data-extra.js.map +1 -1
  48. package/dist/commands/data.d.ts +120 -2
  49. package/dist/commands/data.js +307 -24
  50. package/dist/commands/data.js.map +1 -1
  51. package/dist/commands/diagnose.d.ts +66 -4
  52. package/dist/commands/diagnose.js +329 -29
  53. package/dist/commands/diagnose.js.map +1 -1
  54. package/dist/commands/digest.js +2 -1
  55. package/dist/commands/digest.js.map +1 -1
  56. package/dist/commands/doc.d.ts +25 -4
  57. package/dist/commands/doc.js +100 -18
  58. package/dist/commands/doc.js.map +1 -1
  59. package/dist/commands/doctor.d.ts +130 -0
  60. package/dist/commands/doctor.js +814 -0
  61. package/dist/commands/doctor.js.map +1 -0
  62. package/dist/commands/events.js +3 -1
  63. package/dist/commands/events.js.map +1 -1
  64. package/dist/commands/explain.js +5 -5
  65. package/dist/commands/explain.js.map +1 -1
  66. package/dist/commands/graph.js +5 -3
  67. package/dist/commands/graph.js.map +1 -1
  68. package/dist/commands/import.d.ts +368 -13
  69. package/dist/commands/import.js +1096 -55
  70. package/dist/commands/import.js.map +1 -1
  71. package/dist/commands/init.d.ts +20 -9
  72. package/dist/commands/init.js +433 -973
  73. package/dist/commands/init.js.map +1 -1
  74. package/dist/commands/keys.d.ts +1 -0
  75. package/dist/commands/keys.js +15 -2
  76. package/dist/commands/keys.js.map +1 -1
  77. package/dist/commands/knowledge.d.ts +28 -6
  78. package/dist/commands/knowledge.js +358 -73
  79. package/dist/commands/knowledge.js.map +1 -1
  80. package/dist/commands/launch.js +2 -2
  81. package/dist/commands/launch.js.map +1 -1
  82. package/dist/commands/lens.d.ts +37 -1
  83. package/dist/commands/lens.js +193 -72
  84. package/dist/commands/lens.js.map +1 -1
  85. package/dist/commands/market-authoring.d.ts +72 -0
  86. package/dist/commands/market-authoring.js +566 -0
  87. package/dist/commands/market-authoring.js.map +1 -0
  88. package/dist/commands/market-official.d.ts +58 -0
  89. package/dist/commands/market-official.js +84 -0
  90. package/dist/commands/market-official.js.map +1 -0
  91. package/dist/commands/market.d.ts +419 -20
  92. package/dist/commands/market.js +2124 -193
  93. package/dist/commands/market.js.map +1 -1
  94. package/dist/commands/mcp.d.ts +70 -13
  95. package/dist/commands/mcp.js +308 -40
  96. package/dist/commands/mcp.js.map +1 -1
  97. package/dist/commands/open.d.ts +39 -9
  98. package/dist/commands/open.js +80 -25
  99. package/dist/commands/open.js.map +1 -1
  100. package/dist/commands/playbook.d.ts +42 -0
  101. package/dist/commands/playbook.js +162 -0
  102. package/dist/commands/playbook.js.map +1 -0
  103. package/dist/commands/pod.js +1 -1
  104. package/dist/commands/pod.js.map +1 -1
  105. package/dist/commands/pods.d.ts +19 -0
  106. package/dist/commands/pods.js +220 -85
  107. package/dist/commands/pods.js.map +1 -1
  108. package/dist/commands/proposals-actions.d.ts +62 -0
  109. package/dist/commands/proposals-actions.js +146 -8
  110. package/dist/commands/proposals-actions.js.map +1 -1
  111. package/dist/commands/proposals-await.d.ts +68 -0
  112. package/dist/commands/proposals-await.js +248 -0
  113. package/dist/commands/proposals-await.js.map +1 -0
  114. package/dist/commands/proton-setup.d.ts +73 -0
  115. package/dist/commands/proton-setup.js +577 -0
  116. package/dist/commands/proton-setup.js.map +1 -0
  117. package/dist/commands/providers.d.ts +23 -0
  118. package/dist/commands/providers.js +126 -1
  119. package/dist/commands/providers.js.map +1 -1
  120. package/dist/commands/raycast.js +6 -2
  121. package/dist/commands/raycast.js.map +1 -1
  122. package/dist/commands/rule.d.ts +150 -0
  123. package/dist/commands/rule.js +447 -0
  124. package/dist/commands/rule.js.map +1 -0
  125. package/dist/commands/session-wait.d.ts +111 -0
  126. package/dist/commands/session-wait.js +209 -0
  127. package/dist/commands/session-wait.js.map +1 -0
  128. package/dist/commands/sessions.d.ts +52 -0
  129. package/dist/commands/sessions.js +479 -58
  130. package/dist/commands/sessions.js.map +1 -1
  131. package/dist/commands/skill-manage.d.ts +21 -0
  132. package/dist/commands/skill-manage.js +136 -19
  133. package/dist/commands/skill-manage.js.map +1 -1
  134. package/dist/commands/skills.js +19 -1
  135. package/dist/commands/skills.js.map +1 -1
  136. package/dist/commands/status.d.ts +1 -4
  137. package/dist/commands/status.js +5 -34
  138. package/dist/commands/status.js.map +1 -1
  139. package/dist/commands/statusline.backoff.test.d.ts +13 -0
  140. package/dist/commands/statusline.backoff.test.js +100 -0
  141. package/dist/commands/statusline.backoff.test.js.map +1 -0
  142. package/dist/commands/statusline.js +16 -9
  143. package/dist/commands/statusline.js.map +1 -1
  144. package/dist/commands/sync-status.d.ts +12 -0
  145. package/dist/commands/sync-status.js +125 -0
  146. package/dist/commands/sync-status.js.map +1 -0
  147. package/dist/commands/templates-retire.d.ts +34 -0
  148. package/dist/commands/templates-retire.js +192 -0
  149. package/dist/commands/templates-retire.js.map +1 -0
  150. package/dist/commands/tools.js +6 -21
  151. package/dist/commands/tools.js.map +1 -1
  152. package/dist/commands/tracks.d.ts +51 -0
  153. package/dist/commands/tracks.js +291 -0
  154. package/dist/commands/tracks.js.map +1 -0
  155. package/dist/commands/update.d.ts +3 -11
  156. package/dist/commands/update.js +5 -134
  157. package/dist/commands/update.js.map +1 -1
  158. package/dist/commands/upload.d.ts +68 -0
  159. package/dist/commands/upload.js +257 -0
  160. package/dist/commands/upload.js.map +1 -0
  161. package/dist/commands/vendor.d.ts +28 -0
  162. package/dist/commands/vendor.js +110 -0
  163. package/dist/commands/vendor.js.map +1 -0
  164. package/dist/commands/versions.js +6 -0
  165. package/dist/commands/versions.js.map +1 -1
  166. package/dist/commands/view.js +10 -5
  167. package/dist/commands/view.js.map +1 -1
  168. package/dist/commands/whoami.d.ts +23 -3
  169. package/dist/commands/whoami.js +169 -23
  170. package/dist/commands/whoami.js.map +1 -1
  171. package/dist/commands/worker.d.ts +122 -0
  172. package/dist/commands/worker.js +435 -0
  173. package/dist/commands/worker.js.map +1 -0
  174. package/dist/commands/worker.test.d.ts +1 -0
  175. package/dist/commands/worker.test.js +116 -0
  176. package/dist/commands/worker.test.js.map +1 -0
  177. package/dist/commands/workspace-ops.d.ts +35 -0
  178. package/dist/commands/workspace-ops.js +153 -0
  179. package/dist/commands/workspace-ops.js.map +1 -0
  180. package/dist/index.d.ts +6 -6
  181. package/dist/index.js +1009 -171
  182. package/dist/index.js.map +1 -1
  183. package/dist/lib/agent-connections.d.ts +31 -0
  184. package/dist/lib/agent-connections.js +33 -0
  185. package/dist/lib/agent-connections.js.map +1 -0
  186. package/dist/lib/agent-detect.d.ts +27 -0
  187. package/dist/lib/agent-detect.js +71 -0
  188. package/dist/lib/agent-detect.js.map +1 -0
  189. package/dist/lib/agent-door.d.ts +138 -0
  190. package/dist/lib/agent-door.js +426 -0
  191. package/dist/lib/agent-door.js.map +1 -0
  192. package/dist/lib/agents-config.d.ts +2 -0
  193. package/dist/lib/agents-config.js +4 -9
  194. package/dist/lib/agents-config.js.map +1 -1
  195. package/dist/lib/approval-poll.d.ts +31 -2
  196. package/dist/lib/approval-poll.js +20 -7
  197. package/dist/lib/approval-poll.js.map +1 -1
  198. package/dist/lib/atomic-file.d.ts +48 -0
  199. package/dist/lib/atomic-file.js +129 -0
  200. package/dist/lib/atomic-file.js.map +1 -0
  201. package/dist/lib/auth.d.ts +14 -9
  202. package/dist/lib/auth.js +44 -61
  203. package/dist/lib/auth.js.map +1 -1
  204. package/dist/lib/batch-approval.d.ts +85 -0
  205. package/dist/lib/batch-approval.js +170 -0
  206. package/dist/lib/batch-approval.js.map +1 -0
  207. package/dist/lib/capture-lane.d.ts +6 -5
  208. package/dist/lib/capture-lane.js +11 -8
  209. package/dist/lib/capture-lane.js.map +1 -1
  210. package/dist/lib/capture-structure.d.ts +342 -0
  211. package/dist/lib/capture-structure.js +295 -0
  212. package/dist/lib/capture-structure.js.map +1 -0
  213. package/dist/lib/catalog-templates.d.ts +59 -0
  214. package/dist/lib/catalog-templates.js +126 -0
  215. package/dist/lib/catalog-templates.js.map +1 -0
  216. package/dist/lib/cli-build.d.ts +19 -0
  217. package/dist/lib/cli-build.js +37 -0
  218. package/dist/lib/cli-build.js.map +1 -0
  219. package/dist/lib/conversation-headers.d.ts +18 -0
  220. package/dist/lib/conversation-headers.js +32 -0
  221. package/dist/lib/conversation-headers.js.map +1 -0
  222. package/dist/lib/cp-packages.d.ts +216 -4
  223. package/dist/lib/cp-packages.js +414 -11
  224. package/dist/lib/cp-packages.js.map +1 -1
  225. package/dist/lib/credential-class.d.ts +117 -0
  226. package/dist/lib/credential-class.js +116 -0
  227. package/dist/lib/credential-class.js.map +1 -0
  228. package/dist/lib/describe-lens.d.ts +35 -0
  229. package/dist/lib/describe-lens.js +40 -0
  230. package/dist/lib/describe-lens.js.map +1 -1
  231. package/dist/lib/device-connect.d.ts +125 -0
  232. package/dist/lib/device-connect.js +256 -0
  233. package/dist/lib/device-connect.js.map +1 -0
  234. package/dist/lib/directory-lens.d.ts +99 -0
  235. package/dist/lib/directory-lens.js +187 -0
  236. package/dist/lib/directory-lens.js.map +1 -0
  237. package/dist/lib/exporter-coverage.d.ts +71 -0
  238. package/dist/lib/exporter-coverage.js +97 -0
  239. package/dist/lib/exporter-coverage.js.map +1 -0
  240. package/dist/lib/hub-client.d.ts +43 -9
  241. package/dist/lib/hub-client.js +429 -65
  242. package/dist/lib/hub-client.js.map +1 -1
  243. package/dist/lib/id.d.ts +23 -0
  244. package/dist/lib/id.js +35 -0
  245. package/dist/lib/id.js.map +1 -0
  246. package/dist/lib/init-connect.d.ts +41 -0
  247. package/dist/lib/init-connect.js +75 -0
  248. package/dist/lib/init-connect.js.map +1 -0
  249. package/dist/lib/init-exit.d.ts +24 -0
  250. package/dist/lib/init-exit.js +41 -0
  251. package/dist/lib/init-exit.js.map +1 -0
  252. package/dist/lib/init-flow.d.ts +25 -0
  253. package/dist/lib/init-flow.js +40 -0
  254. package/dist/lib/init-flow.js.map +1 -0
  255. package/dist/lib/init-handoff.d.ts +16 -0
  256. package/dist/lib/init-handoff.js +19 -0
  257. package/dist/lib/init-handoff.js.map +1 -0
  258. package/dist/lib/init-output.d.ts +18 -0
  259. package/dist/lib/init-output.js +43 -0
  260. package/dist/lib/init-output.js.map +1 -0
  261. package/dist/lib/init-pod.d.ts +45 -0
  262. package/dist/lib/init-pod.js +36 -0
  263. package/dist/lib/init-pod.js.map +1 -0
  264. package/dist/lib/installed.d.ts +210 -11
  265. package/dist/lib/installed.js +234 -36
  266. package/dist/lib/installed.js.map +1 -1
  267. package/dist/lib/key-approval.d.ts +57 -0
  268. package/dist/lib/key-approval.js +117 -0
  269. package/dist/lib/key-approval.js.map +1 -0
  270. package/dist/lib/key-diagnosis.d.ts +56 -0
  271. package/dist/lib/key-diagnosis.js +227 -0
  272. package/dist/lib/key-diagnosis.js.map +1 -0
  273. package/dist/lib/key-doctor.d.ts +136 -0
  274. package/dist/lib/key-doctor.js +286 -0
  275. package/dist/lib/key-doctor.js.map +1 -0
  276. package/dist/lib/key-locations.d.ts +120 -0
  277. package/dist/lib/key-locations.js +326 -0
  278. package/dist/lib/key-locations.js.map +1 -0
  279. package/dist/lib/key-source.d.ts +66 -0
  280. package/dist/lib/key-source.js +106 -0
  281. package/dist/lib/key-source.js.map +1 -0
  282. package/dist/lib/key-state.d.ts +70 -0
  283. package/dist/lib/key-state.js +115 -0
  284. package/dist/lib/key-state.js.map +1 -0
  285. package/dist/lib/kind-package.d.ts +181 -0
  286. package/dist/lib/kind-package.js +679 -0
  287. package/dist/lib/kind-package.js.map +1 -0
  288. package/dist/lib/knowledge-title.d.ts +24 -0
  289. package/dist/lib/knowledge-title.js +46 -0
  290. package/dist/lib/knowledge-title.js.map +1 -0
  291. package/dist/lib/knowledge-title.test.d.ts +1 -0
  292. package/dist/lib/knowledge-title.test.js +34 -0
  293. package/dist/lib/knowledge-title.test.js.map +1 -0
  294. package/dist/lib/machine-instance.d.ts +64 -0
  295. package/dist/lib/machine-instance.js +142 -0
  296. package/dist/lib/machine-instance.js.map +1 -0
  297. package/dist/lib/mcp-bridge.d.ts +42 -0
  298. package/dist/lib/mcp-bridge.js +147 -0
  299. package/dist/lib/mcp-bridge.js.map +1 -0
  300. package/dist/lib/mcp-bridge.test.d.ts +1 -0
  301. package/dist/lib/mcp-bridge.test.js +90 -0
  302. package/dist/lib/mcp-bridge.test.js.map +1 -0
  303. package/dist/lib/mcp-call.d.ts +30 -0
  304. package/dist/lib/mcp-call.js +107 -0
  305. package/dist/lib/mcp-call.js.map +1 -0
  306. package/dist/lib/mcp-snippets.d.ts +53 -0
  307. package/dist/lib/mcp-snippets.js +82 -0
  308. package/dist/lib/mcp-snippets.js.map +1 -0
  309. package/dist/lib/next-steps.d.ts +8 -0
  310. package/dist/lib/next-steps.js +31 -1
  311. package/dist/lib/next-steps.js.map +1 -1
  312. package/dist/lib/package-wire.d.ts +179 -0
  313. package/dist/lib/package-wire.js +68 -0
  314. package/dist/lib/package-wire.js.map +1 -0
  315. package/dist/lib/pair-link.d.ts +38 -0
  316. package/dist/lib/pair-link.js +68 -0
  317. package/dist/lib/pair-link.js.map +1 -0
  318. package/dist/lib/pod-wide.d.ts +40 -0
  319. package/dist/lib/pod-wide.js +46 -0
  320. package/dist/lib/pod-wide.js.map +1 -0
  321. package/dist/lib/pod.d.ts +119 -115
  322. package/dist/lib/pod.js +206 -412
  323. package/dist/lib/pod.js.map +1 -1
  324. package/dist/lib/project-ref.d.ts +9 -3
  325. package/dist/lib/project-ref.js +10 -4
  326. package/dist/lib/project-ref.js.map +1 -1
  327. package/dist/lib/review-credential.d.ts +119 -0
  328. package/dist/lib/review-credential.js +147 -0
  329. package/dist/lib/review-credential.js.map +1 -0
  330. package/dist/lib/safe-open.d.ts +49 -0
  331. package/dist/lib/safe-open.js +119 -0
  332. package/dist/lib/safe-open.js.map +1 -0
  333. package/dist/lib/session-lens.d.ts +40 -1
  334. package/dist/lib/session-lens.js +54 -4
  335. package/dist/lib/session-lens.js.map +1 -1
  336. package/dist/lib/superwhisper-import.d.ts +8 -0
  337. package/dist/lib/superwhisper-import.js +14 -7
  338. package/dist/lib/superwhisper-import.js.map +1 -1
  339. package/dist/lib/superwhisper-title.test.d.ts +1 -0
  340. package/dist/lib/superwhisper-title.test.js +18 -0
  341. package/dist/lib/superwhisper-title.test.js.map +1 -0
  342. package/dist/lib/targets.d.ts +134 -10
  343. package/dist/lib/targets.js +962 -258
  344. package/dist/lib/targets.js.map +1 -1
  345. package/dist/lib/template-file.d.ts +78 -0
  346. package/dist/lib/template-file.js +140 -0
  347. package/dist/lib/template-file.js.map +1 -0
  348. package/dist/lib/template-lifecycle.d.ts +217 -0
  349. package/dist/lib/template-lifecycle.js +433 -0
  350. package/dist/lib/template-lifecycle.js.map +1 -0
  351. package/dist/lib/template-steps.d.ts +88 -0
  352. package/dist/lib/template-steps.js +118 -0
  353. package/dist/lib/template-steps.js.map +1 -0
  354. package/dist/lib/time-ago.d.ts +2 -0
  355. package/dist/lib/time-ago.js +15 -0
  356. package/dist/lib/time-ago.js.map +1 -0
  357. package/dist/utils/logger.js +5 -2
  358. package/dist/utils/logger.js.map +1 -1
  359. package/package.json +25 -18
  360. package/skills/README.md +12 -10
  361. package/skills/agent-os/SKILL.md +220 -99
  362. package/skills/manifest.json +2 -2
  363. package/skills/onboard/SKILL.md +61 -25
  364. package/skills/synap/README.md +5 -8
  365. package/skills/synap/SKILL.md +1185 -301
  366. package/skills/synap/_order.txt +7 -0
  367. package/skills/synap/_skill.yaml +1 -1
  368. package/skills/synap/automations.md +15 -0
  369. package/skills/synap/capture.md +54 -151
  370. package/skills/synap/cli-operations.md +24 -18
  371. package/skills/synap/common-mistakes.md +1 -0
  372. package/skills/synap/concepts.md +28 -0
  373. package/skills/synap/content-os.md +92 -0
  374. package/skills/synap/creative-loop.md +15 -10
  375. package/skills/synap/crm.md +21 -52
  376. package/skills/synap/digesting-a-channel.md +25 -0
  377. package/skills/synap/document-embeds.md +141 -47
  378. package/skills/synap/escalation-ladder.md +20 -10
  379. package/skills/synap/focus-sessions.md +47 -21
  380. package/skills/synap/from-intent.md +142 -0
  381. package/skills/synap/governance-rules.md +4 -4
  382. package/skills/synap/governance.md +10 -7
  383. package/skills/synap/hand-off.md +33 -0
  384. package/skills/synap/inline-patterns.md +15 -7
  385. package/skills/synap/lenses.md +33 -15
  386. package/skills/synap/linking.md +41 -40
  387. package/skills/synap/mcp-remote-servers.md +64 -0
  388. package/skills/synap/mental-model.md +24 -22
  389. package/skills/synap/multi-entity-capture.md +6 -4
  390. package/skills/synap/operating-mode-rules.md +1 -1
  391. package/skills/synap/processes.md +118 -0
  392. package/skills/synap/quick-reference.md +5 -1
  393. package/skills/synap/reading.md +3 -1
  394. package/skills/synap/reflexes.md +12 -42
  395. package/skills/synap/viewframe-cells.md +38 -5
  396. package/skills/synap/work-flow.md +1 -1
  397. package/skills/synap/work-model.md +96 -0
  398. package/skills/synap/worked-examples.md +21 -1
  399. package/skills/synap/workspace-design.md +14 -10
  400. package/skills/synap/writes.md +165 -35
  401. package/skills/synap/writing-titles.md +63 -0
  402. package/skills/synap-app/SKILL.md +319 -0
  403. package/skills/synap-app/_order.txt +5 -0
  404. package/skills/synap-app/_skill.yaml +20 -0
  405. package/skills/synap-app/creating-the-base-app.md +64 -0
  406. package/skills/synap-app/governance.md +42 -0
  407. package/skills/synap-app/install-commands.md +55 -0
  408. package/skills/synap-app/overview.md +50 -0
  409. package/skills/synap-app/using-the-sdk.md +73 -0
  410. package/skills/synap-design/SKILL.md +474 -0
  411. package/skills/synap-design/_order.txt +4 -0
  412. package/skills/synap-design/_skill.yaml +21 -0
  413. package/skills/synap-design/loop.md +134 -0
  414. package/skills/synap-design/overview.md +44 -0
  415. package/skills/synap-design/principles.md +130 -0
  416. package/skills/synap-design/system.md +133 -0
  417. package/skills/synap-market/SKILL.md +625 -0
  418. package/skills/synap-market/_order.txt +5 -0
  419. package/skills/synap-market/_skill.yaml +24 -0
  420. package/skills/synap-market/author-and-publish.md +212 -0
  421. package/skills/synap-market/discover-and-fetch.md +59 -0
  422. package/skills/synap-market/governance-and-catalog.md +63 -0
  423. package/skills/synap-market/install.md +133 -0
  424. package/skills/synap-market/overview.md +119 -0
  425. package/skills/synap-schema/SKILL.md +172 -10
  426. package/skills/synap-schema/_order.txt +2 -0
  427. package/skills/synap-schema/_skill.yaml +4 -2
  428. package/skills/synap-schema/common-mistakes.md +4 -2
  429. package/skills/synap-schema/discover-profiles.md +1 -1
  430. package/skills/synap-schema/entity-scope.md +15 -3
  431. package/skills/synap-schema/extend-first.md +29 -0
  432. package/skills/synap-schema/extend-vs-create.md +1 -1
  433. package/skills/synap-schema/intent-vocabulary-ssot.md +111 -0
  434. package/skills/synap-schema/property-types.md +1 -1
  435. package/skills/synap-schema/relations.md +1 -1
  436. package/skills/synap-ui/SKILL.md +19 -12
  437. package/skills/synap-ui/_skill.yaml +1 -1
  438. package/skills/synap-ui/ai-companion.md +1 -1
  439. package/skills/synap-ui/arranging-bento.md +2 -0
  440. package/skills/synap-ui/bento-layouts.md +10 -10
  441. package/skills/synap-ui/bento-recipes.md +313 -543
  442. package/skills/synap-ui/four-builds.md +5 -0
  443. package/skills/synap-ui/view-types.md +2 -2
  444. package/skills/synap-ui/widget-catalog.md +22 -278
  445. package/templates/automations/bookmark-enrichment.automation.json +290 -13
  446. package/templates/automations/url-bookmark-capture.automation.json +73 -11
  447. package/templates/skills/authoring-playbooks/SKILL.md +6 -3
  448. package/templates/skills/authoring-playbooks/reference/stages-contract.md +15 -0
  449. package/templates/skills/authoring-playbooks/reference/worked-example.md +3 -0
  450. package/dist/commands/infra.d.ts +0 -21
  451. package/dist/commands/infra.js +0 -262
  452. package/dist/commands/infra.js.map +0 -1
  453. package/dist/lib/browser-auth.d.ts +0 -35
  454. package/dist/lib/browser-auth.js +0 -170
  455. package/dist/lib/browser-auth.js.map +0 -1
  456. package/dist/lib/openclaw.d.ts +0 -32
  457. package/dist/lib/openclaw.js +0 -164
  458. package/dist/lib/openclaw.js.map +0 -1
  459. package/dist/lib/seed.d.ts +0 -13
  460. package/dist/lib/seed.js +0 -135
  461. package/dist/lib/seed.js.map +0 -1
@@ -0,0 +1,286 @@
1
+ /**
2
+ * Key health for one pod: read every copy, ask the pod about each key, print
3
+ * one diagnosis per problem — and, with `--fix`, do the one right thing.
4
+ *
5
+ * The fix never writes a key the pod has not confirmed live (`assertKeyWritable`),
6
+ * and it ends with a real MCP `initialize` against `/mcp` using the key it
7
+ * wrote: a fix is only reported ✓ when that call succeeds AND every copy it had
8
+ * to rewrite was rewritten.
9
+ *
10
+ * A key is sent to this pod only when something ties it to this pod
11
+ * (`keysToProbe`); keys are asked about ONE AT A TIME. The pod resolves a key it
12
+ * does not know with a bcrypt scan of every key sharing its prefix (~12s on a
13
+ * 4-thread pool, measured 2026-10-12); asked all at once, four unknown keys
14
+ * starved each other past the timeout and read "no answer".
15
+ */
16
+ import fs from "node:fs";
17
+ import os from "node:os";
18
+ import path from "node:path";
19
+ import chalk from "chalk";
20
+ import { writeFileAtomic } from "./atomic-file.js";
21
+ import { collectKeyInventory, keysToProbe } from "./key-locations.js";
22
+ import { diagnoseKeys } from "./key-diagnosis.js";
23
+ import { fetchKeyState, assertKeyWritable } from "./key-state.js";
24
+ import { machineInstanceId, thisComputerInstanceIds } from "./machine-instance.js";
25
+ /** Per-key wait for `/auth/key-state` — an unknown key costs the pod ~12s of bcrypt. */
26
+ export const KEY_STATE_TIMEOUT_MS = 30_000;
27
+ async function targetLabel(surface) {
28
+ try {
29
+ const { TARGETS } = await import("./targets.js");
30
+ return TARGETS[surface]?.label ?? surface;
31
+ }
32
+ catch {
33
+ return surface;
34
+ }
35
+ }
36
+ export async function checkKeyHealth(podUrl, deps = {}) {
37
+ const allClients = deps.clients ?? (await import("./targets.js")).clientKeyFiles();
38
+ const clients = deps.surface ? allClients.filter((c) => c.surface === deps.surface) : allClients;
39
+ const all = collectKeyInventory({
40
+ home: deps.home ?? os.homedir(),
41
+ podUrl,
42
+ envKey: "envKey" in deps ? deps.envKey : process.env.SYNAP_HUB_API_KEY,
43
+ envPodUrl: "envPodUrl" in deps ? deps.envPodUrl : process.env.SYNAP_POD_URL,
44
+ clients,
45
+ });
46
+ const inventory = deps.surface
47
+ ? { ...all, locations: all.locations.filter((l) => l.role === "agent" && l.surface === deps.surface) }
48
+ : all;
49
+ const keys = keysToProbe(inventory.locations);
50
+ const probed = new Set(keys);
51
+ const states = new Map();
52
+ // One at a time — see the module doc.
53
+ for (const k of keys)
54
+ states.set(k, await fetchKeyState(podUrl, k, { fetch: deps.fetch, timeoutMs: deps.timeoutMs ?? KEY_STATE_TIMEOUT_MS }));
55
+ const locations = inventory.locations.filter((l) => probed.has(l.key));
56
+ const notSent = inventory.locations.filter((l) => !probed.has(l.key));
57
+ const labels = new Map();
58
+ for (const s of new Set(inventory.locations.map((l) => l.surface).filter((x) => !!x)))
59
+ labels.set(s, deps.labelOf ? deps.labelOf(s) : await targetLabel(s));
60
+ const envKey = locations.find((l) => l.kind === "process-env")?.key;
61
+ const idFor = deps.instanceIdFor ?? ((s) => machineInstanceId(s));
62
+ const answers = [...states.values()];
63
+ return {
64
+ podUrl,
65
+ locations,
66
+ states,
67
+ unchecked: inventory.unchecked,
68
+ notSent,
69
+ podDescribesKeys: answers.some((a) => !a.legacy && a.state !== "unreachable"),
70
+ diagnoses: diagnoseKeys({
71
+ locations,
72
+ states,
73
+ envKey,
74
+ instanceIdFor: idFor,
75
+ instanceIdsForAgentType: (t) => thisComputerInstanceIds(t, idFor),
76
+ labelOf: (s) => labels.get(s) ?? s,
77
+ }),
78
+ };
79
+ }
80
+ /** The problems only — `ok` diagnoses are summarised, not listed. */
81
+ export function keyProblems(report) {
82
+ return report.diagnoses.filter((d) => d.code !== "ok");
83
+ }
84
+ /** A problem `--fix` can act on (not merely tell you a command). */
85
+ export function isFixable(d) {
86
+ return d.action !== "none" && d.action !== "login" && d.action !== "edit_shell_rc";
87
+ }
88
+ /**
89
+ * The check behind every "<Agent> connected" line: read back what setup WROTE
90
+ * for `surface` — the same copies `synap doctor` reads — ask the pod about each
91
+ * key, and pass only when the doctor would say "key works". The 2026-10-15
92
+ * devbox printed "✓ Claude Code connected" over a key the pod held as
93
+ * awaiting approval; a success line now comes from this read, never from
94
+ * having written the file.
95
+ */
96
+ export async function confirmSurfaceKey(podUrl, surface, deps = {}) {
97
+ let report;
98
+ try {
99
+ report = await checkKeyHealth(podUrl, { ...deps, surface });
100
+ }
101
+ catch (err) {
102
+ return { verdict: "unconfirmed", reason: `its key could not be read back (${err instanceof Error ? err.message : String(err)})` };
103
+ }
104
+ const unread = report.unchecked?.[0];
105
+ if (unread)
106
+ return { verdict: "unconfirmed", reason: `${unread.tool} — ${unread.file} ${unread.reason}` };
107
+ const d = report.diagnoses.find((x) => x.surface === surface);
108
+ if (d?.code === "ok")
109
+ return { verdict: "active" };
110
+ if (d?.code === "unverifiable")
111
+ return { verdict: "unconfirmed", reason: (d.key && report.states.get(d.key)?.error) || "the pod did not answer" };
112
+ if (d)
113
+ return { verdict: "not-active", title: d.title, command: d.command };
114
+ const { TARGETS, isTargetName } = await import("./targets.js");
115
+ const target = isTargetName(surface) ? TARGETS[surface] : undefined;
116
+ if (target && "none" in target.keyStore)
117
+ return { verdict: "unchecked", reason: target.keyStore.none };
118
+ return { verdict: "not-active", title: `${target?.label ?? surface}: no key for this pod was found where setup writes it`, command: "synap doctor" };
119
+ }
120
+ const plural = (n, one, many = one + "s") => `${n} ${n === 1 ? one : many}`;
121
+ /**
122
+ * Print what is wrong, and what could not be checked. Working keys are one
123
+ * line (listed with `verbose`); an unverifiable key is "?", never ✓ or ✗.
124
+ */
125
+ export function printKeyHealth(report, opts = {}) {
126
+ const ind = opts.indent ?? " ";
127
+ const dim = (t) => console.log(chalk.dim(`${ind}${t}`));
128
+ const problems = keyProblems(report);
129
+ const ok = report.diagnoses.filter((d) => d.code === "ok");
130
+ const unverifiable = problems.filter((d) => d.code === "unverifiable");
131
+ const broken = problems.filter((d) => d.code !== "unverifiable");
132
+ if (opts.showOk !== false && ok.length) {
133
+ if (opts.verbose)
134
+ for (const d of ok)
135
+ console.log(`${ind}${chalk.green("✓")} ${d.title}`);
136
+ else
137
+ console.log(`${ind}${chalk.green("✓")} ${plural(ok.length, "agent key")} work${ok.length === 1 ? "s" : ""}: ${ok.map((d) => d.label ?? d.surface).join(", ")}`);
138
+ }
139
+ for (const d of broken) {
140
+ const mark = d.severity === "error" ? chalk.red("✗") : chalk.yellow("!");
141
+ console.log(`${ind}${mark} ${chalk.bold(d.title)}`);
142
+ for (const line of d.lines)
143
+ dim(` ${line}`);
144
+ if (d.command)
145
+ dim(` → ${d.command}`);
146
+ }
147
+ // Group the unverifiable by why — "no answer in 30s" four times is one line.
148
+ const byWhy = new Map();
149
+ for (const d of unverifiable) {
150
+ const why = (d.key && report.states.get(d.key)?.error) || "the pod did not answer";
151
+ byWhy.set(why, [...(byWhy.get(why) ?? []), d]);
152
+ }
153
+ for (const [why, ds] of byWhy) {
154
+ console.log(`${ind}${chalk.yellow("?")} ${plural(ds.length, "key")} not checked — ${why}: ${ds.map((d) => d.label ?? d.surface).join(", ")}`);
155
+ dim(" → run synap doctor again; if it repeats: synap agents list");
156
+ }
157
+ const notSent = report.notSent ?? [];
158
+ if (notSent.length) {
159
+ const keys = new Set(notSent.map((l) => l.key)).size;
160
+ console.log(`${ind}${chalk.yellow("?")} ${plural(keys, "key")} not checked — ${keys === 1 ? "it belongs" : "they belong"} to another pod or nothing says which${opts.verbose ? "" : " (details with -v)"}`);
161
+ if (opts.verbose)
162
+ for (const l of notSent)
163
+ dim(` ${l.label}`);
164
+ }
165
+ for (const u of report.unchecked ?? [])
166
+ console.log(`${ind}${chalk.yellow("?")} not checked: ${u.tool} — ${u.file} ${u.reason}`);
167
+ if (report.locations.length === 0 && notSent.length === 0)
168
+ dim("No Synap key is configured for this pod on this computer.");
169
+ if (!report.podDescribesKeys && report.locations.length > 0)
170
+ dim("(This pod predates the key-state door: it can say a key fails, not why. Update the pod for precise reasons.)");
171
+ if (opts.fixHint && problems.some(isFixable))
172
+ dim(`Fix it: ${chalk.cyan("synap doctor --fix")}`);
173
+ }
174
+ // ─── --fix ────────────────────────────────────────────────────────────────
175
+ /**
176
+ * Replace `oldKey` with `newKey` in one file, atomically, mode kept. Works for
177
+ * every client format (JSON, JSONC with its comments, TOML, YAML) because a key
178
+ * is a unique opaque token: the edit touches exactly the copies of that key and
179
+ * nothing else. Throws when the file no longer holds the old key.
180
+ */
181
+ function replaceKeyInFile(file, oldKey, newKey) {
182
+ const text = fs.readFileSync(file, "utf8");
183
+ if (!text.includes(oldKey))
184
+ throw new Error("the old key is no longer in the file");
185
+ writeFileAtomic(file, text.split(oldKey).join(newKey));
186
+ }
187
+ /** The agent a key belongs to, from the pod's own status door. Throws when the pod does not say. */
188
+ async function agentOfKey(podUrl, key, f) {
189
+ const res = await f(`${podUrl.replace(/\/+$/, "")}/api/hub/auth/status`, {
190
+ headers: { Authorization: `Bearer ${key}` },
191
+ signal: AbortSignal.timeout(15_000),
192
+ }).catch((err) => {
193
+ throw new Error(`could not ask the pod whose key this is (${err.message})`);
194
+ });
195
+ const userId = res.ok ? (await res.json().catch(() => ({}))).userId : undefined;
196
+ if (!userId)
197
+ throw new Error(`could not ask the pod whose key this is (HTTP ${res.status} from /auth/status)`);
198
+ return userId;
199
+ }
200
+ /**
201
+ * Write `key` into every rewritable copy of `surface` for this pod — ONLY after
202
+ * the pod confirms it is live. A copy that cannot be rewritten is reported in
203
+ * `failed`, never dropped.
204
+ */
205
+ export async function rewriteSurfaceKey(report, surface, key, agentUserId, deps = {}) {
206
+ await assertKeyWritable(report.podUrl, key, deps);
207
+ const pod = await import("./pod.js");
208
+ // A blank agent id saved next to a key breaks every later lookup — ask, or stop.
209
+ const agentId = agentUserId || (await agentOfKey(report.podUrl, key, deps.fetch ?? fetch));
210
+ const configFile = path.join(deps.home ?? os.homedir(), ".synap", "config.json");
211
+ const mine = report.locations.filter((l) => l.surface === surface);
212
+ const done = mine.filter((l) => l.key === key && l.kind !== "pending").map((l) => l.label);
213
+ const failed = [];
214
+ pod.setSurfaceAgentKey(surface, { hubApiKey: key, agentUserId: agentId, podUrl: report.podUrl });
215
+ pod.clearPendingAgentKey(surface, report.podUrl);
216
+ if (!mine.some((l) => l.file === configFile && l.key === key && l.kind !== "pending"))
217
+ done.push(`~/.synap/config.json → agentKeysByPod.${surface}`);
218
+ // The CLI config is handled above; every other file gets a precise text edit.
219
+ for (const loc of mine.filter((l) => l.rewritable && l.key !== key && l.file && l.file !== configFile)) {
220
+ try {
221
+ replaceKeyInFile(loc.file, loc.key, key);
222
+ done.push(loc.label);
223
+ }
224
+ catch (err) {
225
+ failed.push(`${loc.label}: ${err instanceof Error ? err.message : String(err)}`);
226
+ }
227
+ }
228
+ return { done: [...new Set(done)], failed };
229
+ }
230
+ /** Perform each diagnosis's one action, then verify with a real MCP initialize. */
231
+ export async function fixKeyHealth(report, deps = {}) {
232
+ const outcomes = [];
233
+ const openUrl = deps.openUrl ?? (await import("./targets.js")).openBrowserUrl;
234
+ const verify = deps.verify ??
235
+ (async (podUrl, key) => (await import("./targets.js")).verifyMcpConnection(podUrl, key, { timeoutMs: 20_000 }));
236
+ const wait = deps.wait ??
237
+ (async (a) => (await import("./key-approval.js")).waitForKeyLive({ ...a, fetch: deps.fetch }));
238
+ const provision = deps.provision ??
239
+ (async (podUrl, mintingKey, agentType, surface) => (await import("./targets.js")).provisionAgentKey(podUrl, mintingKey, agentType, { surfaceName: surface }));
240
+ const mintingKey = report.locations.find((l) => l.kind === "profile" && report.states.get(l.key)?.state === "active")?.key;
241
+ const finish = async (d, surface, key, agentUserId) => {
242
+ const { done: rewritten, failed } = await rewriteSurfaceKey(report, surface, key, agentUserId, { fetch: deps.fetch });
243
+ const name = d.label ?? surface;
244
+ if (failed.length)
245
+ return { diagnosis: d, ok: false, message: `${name}: live key written to ${rewritten.join(", ")}, but NOT to: ${failed.join("; ")}` };
246
+ const v = await verify(report.podUrl, key);
247
+ return v.ok
248
+ ? { diagnosis: d, ok: true, message: `${name}: live key in ${rewritten.join(", ")} — MCP initialize OK${v.toolCount !== undefined ? ` (${v.toolCount} tools)` : ""}${rewritten.some((l) => l.includes(".claude")) ? ". Restart Claude Code to pick it up." : ""}` }
249
+ : { diagnosis: d, ok: false, message: `${name}: key written, but MCP verification failed: ${v.error ?? "unknown error"}` };
250
+ };
251
+ for (const d of keyProblems(report)) {
252
+ try {
253
+ if (d.action === "approve_and_wait" && d.surface && d.key) {
254
+ const { openAndWait } = await import("./key-approval.js");
255
+ const outcome = d.approvalUrl
256
+ ? await openAndWait(d.label ?? d.surface, d.approvalUrl, report.podUrl, () => wait({ podUrl: report.podUrl, pendingKey: d.key }), openUrl)
257
+ : await wait({ podUrl: report.podUrl, pendingKey: d.key });
258
+ if (outcome === "approved")
259
+ outcomes.push(await finish(d, d.surface, d.key, d.agentUserId));
260
+ else if (outcome === "rejected")
261
+ outcomes.push({ diagnosis: d, ok: false, message: `${d.label ?? d.surface}: the request was declined on the pod. Run \`synap doctor --fix\` again to ask anew.` });
262
+ else
263
+ outcomes.push({ diagnosis: d, ok: false, message: `${d.label ?? d.surface}: still waiting for approval — nothing was changed. Approve ${d.approvalUrl ?? "it on your pod"}, then run \`synap doctor --fix\` again.` });
264
+ }
265
+ else if (d.action === "reprovision" && d.surface) {
266
+ if (!mintingKey) {
267
+ outcomes.push({ diagnosis: d, ok: false, message: `${d.label ?? d.surface}: your CLI key for this pod does not work either — run \`synap login --reconnect\` first, then \`synap doctor --fix\`.` });
268
+ continue;
269
+ }
270
+ const fresh = await provision(report.podUrl, mintingKey, d.agentType ?? d.surface, d.surface);
271
+ outcomes.push(await finish(d, d.surface, fresh.hubApiKey, fresh.agentUserId));
272
+ }
273
+ else if (d.action === "rewrite" && d.surface && d.key) {
274
+ outcomes.push(await finish(d, d.surface, d.key, d.agentUserId));
275
+ }
276
+ else if (d.action === "login" || d.action === "edit_shell_rc") {
277
+ outcomes.push({ diagnosis: d, ok: false, message: `${d.title}. Not something --fix can do for you — run: ${d.command}` });
278
+ }
279
+ }
280
+ catch (err) {
281
+ outcomes.push({ diagnosis: d, ok: false, message: `${d.surface ?? "key"}: ${err instanceof Error ? err.message : String(err)}` });
282
+ }
283
+ }
284
+ return outcomes;
285
+ }
286
+ //# sourceMappingURL=key-doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-doctor.js","sourceRoot":"","sources":["../../src/lib/key-doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Every place on this computer that holds a Synap key for one pod.
3
+ *
4
+ * A key is not "configured" in one place. `synap connect claude-code` alone
5
+ * writes three copies (the CLI config, Claude Code's env, Claude Code's MCP
6
+ * registry); every other client `synap connect` supports keeps its own copy in
7
+ * its own file and format (Cursor, Codex, Windsurf, Zed, Goose, VS Code…); a
8
+ * shell rc may export another, and the ambient `SYNAP_HUB_API_KEY` silently
9
+ * beats the CLI profile. When the copies disagree, the one that wins is the one
10
+ * nobody looked at — so the doctor reads all of them, and says which FILE each
11
+ * one lives in.
12
+ *
13
+ * Two honesty rules:
14
+ * - A file it cannot read or parse is reported `unchecked` ("not checked:
15
+ * Zed — settings.json is not valid JSON"), never silently skipped — an
16
+ * unread file is not a file with no key in it.
17
+ * - `podKnown`: a key is sent to this pod (`/auth/key-state`) only when
18
+ * something ties it to THIS pod — a profile / agent key recorded for this
19
+ * pod URL, a client entry whose MCP URL is this pod, a shell rc / process env
20
+ * that also names this pod. A key with no recorded pod (an old `agentKeys`
21
+ * entry, a bare `export SYNAP_HUB_API_KEY`) may be another pod's secret, so it
22
+ * is listed but never sent.
23
+ *
24
+ * Read-only. The client files to read come in as `clients` (derived from
25
+ * `TARGETS` by the caller); everything else is derived from `home`, so tests
26
+ * run on a temp HOME and never see the person's real files.
27
+ */
28
+ export type KeyRole = "person" | "agent";
29
+ export type KeyLocationKind = "profile" | "agent-key-by-pod" | "agent-key" | "pending" | "claude-settings-env" | "claude-mcp-header"
30
+ /** An MCP entry in another client's own config file (Cursor, Codex, Zed…). */
31
+ | "client-config" | "shell-rc" | "process-env";
32
+ /** How a client's config file stores its MCP servers (one parser each). */
33
+ export type KeyFileFormat = "claude-code" | "json" | "jsonc" | "toml" | "yaml-goose";
34
+ /** One client config file to read, for one agent surface. */
35
+ export interface ClientKeyFile {
36
+ surface: string;
37
+ /** The tool's name, for "not checked: <tool>". */
38
+ tool: string;
39
+ file: string;
40
+ format: KeyFileFormat;
41
+ }
42
+ export interface KeyLocation {
43
+ kind: KeyLocationKind;
44
+ /** Human, ready to print: file + field. */
45
+ label: string;
46
+ /** The file it lives in (absent for the process environment). */
47
+ file?: string;
48
+ role: KeyRole;
49
+ /** Agent surface the key belongs to (claude-code, codex, …). */
50
+ surface?: string;
51
+ key: string;
52
+ /** Stored agent id, when the location records one. */
53
+ agentUserId?: string;
54
+ /** The doctor may rewrite this copy itself (shell rc files it never edits). */
55
+ rewritable: boolean;
56
+ /** Profile name, MCP server name, or line number — whatever names it inside the file. */
57
+ ref?: string;
58
+ /**
59
+ * Something ties this copy to THIS pod. Default true; false = the key may be
60
+ * another pod's, so it is never sent to this one (see the module doc).
61
+ */
62
+ podKnown?: boolean;
63
+ }
64
+ /** A place the doctor looked at and could NOT read — reported, never silently ✓. */
65
+ export interface UncheckedLocation {
66
+ /** The tool or store: "Zed", "~/.synap/config.json". */
67
+ tool: string;
68
+ file: string;
69
+ reason: string;
70
+ }
71
+ export interface KeyInventory {
72
+ locations: KeyLocation[];
73
+ unchecked: UncheckedLocation[];
74
+ }
75
+ /** Strip // and /* *\/ comments and trailing commas OUTSIDE strings (JSONC). */
76
+ export declare function stripJsonc(text: string): string;
77
+ /** `~/…` for display. */
78
+ export declare function tildify(file: string, home: string): string;
79
+ export declare const SHELL_RC_FILES: string[];
80
+ /**
81
+ * `SYNAP_HUB_API_KEY=…` assignments in shell rc files (export / set -x /
82
+ * plain), each with the `SYNAP_POD_URL` the same file sets, if any.
83
+ */
84
+ export declare function shellRcAssignments(home: string): Array<{
85
+ file: string;
86
+ line: number;
87
+ key: string;
88
+ podUrl?: string;
89
+ }>;
90
+ /** One MCP entry found in a client file: its name, MCP URL and Bearer key. */
91
+ interface McpEntry {
92
+ name: string;
93
+ url?: string;
94
+ key?: string;
95
+ }
96
+ /** `[mcp_servers.<name>]` tables (Codex, Grok): `url = "…"` + a `Bearer …` header line. */
97
+ export declare function tomlEntries(text: string): McpEntry[];
98
+ export interface CollectInput {
99
+ home: string;
100
+ podUrl: string;
101
+ /** `process.env.SYNAP_HUB_API_KEY` as this process sees it. */
102
+ envKey?: string;
103
+ envPodUrl?: string;
104
+ /** Client config files to read (derived from `TARGETS` — `clientKeyFiles()`). */
105
+ clients?: ClientKeyFile[];
106
+ }
107
+ export declare function collectKeyInventory(input: CollectInput): KeyInventory;
108
+ /** The locations only (see {@link collectKeyInventory}). */
109
+ export declare function collectKeyLocations(input: CollectInput): KeyLocation[];
110
+ /**
111
+ * The keys this pod may be asked about: those with at least one copy tied to
112
+ * this pod. Every other key stays on this computer.
113
+ */
114
+ export declare function keysToProbe(locations: KeyLocation[]): string[];
115
+ /**
116
+ * Which file(s) put the process env key there — the settings env Claude Code
117
+ * injects, or a shell rc. Empty = set by something the doctor cannot see.
118
+ */
119
+ export declare function envKeySetBy(locations: KeyLocation[], envKey: string): KeyLocation[];
120
+ export {};