@synap-core/cli 1.8.0 → 1.10.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 (332) hide show
  1. package/dist/commands/agent-chat.d.ts +47 -0
  2. package/dist/commands/agent-chat.js +250 -0
  3. package/dist/commands/agent-chat.js.map +1 -0
  4. package/dist/commands/agent-run.js +3 -4
  5. package/dist/commands/agent-run.js.map +1 -1
  6. package/dist/commands/agents.js +85 -46
  7. package/dist/commands/agents.js.map +1 -1
  8. package/dist/commands/automation.js +2 -1
  9. package/dist/commands/automation.js.map +1 -1
  10. package/dist/commands/bridge-setup.d.ts +66 -0
  11. package/dist/commands/bridge-setup.js +1112 -0
  12. package/dist/commands/bridge-setup.js.map +1 -0
  13. package/dist/commands/cap-connections.d.ts +28 -0
  14. package/dist/commands/cap-connections.js +224 -0
  15. package/dist/commands/cap-connections.js.map +1 -0
  16. package/dist/commands/capability.d.ts +89 -0
  17. package/dist/commands/capability.js +1523 -0
  18. package/dist/commands/capability.js.map +1 -0
  19. package/dist/commands/centrality.d.ts +20 -0
  20. package/dist/commands/centrality.js +94 -0
  21. package/dist/commands/centrality.js.map +1 -0
  22. package/dist/commands/connect.d.ts +2 -0
  23. package/dist/commands/connect.js +16 -35
  24. package/dist/commands/connect.js.map +1 -1
  25. package/dist/commands/context.js +4 -6
  26. package/dist/commands/context.js.map +1 -1
  27. package/dist/commands/data-extra.d.ts +1 -0
  28. package/dist/commands/data-extra.js +34 -10
  29. package/dist/commands/data-extra.js.map +1 -1
  30. package/dist/commands/data.d.ts +4 -4
  31. package/dist/commands/data.js +241 -184
  32. package/dist/commands/data.js.map +1 -1
  33. package/dist/commands/diagnose.d.ts +20 -0
  34. package/dist/commands/diagnose.js +143 -0
  35. package/dist/commands/diagnose.js.map +1 -0
  36. package/dist/commands/digest.d.ts +17 -0
  37. package/dist/commands/digest.js +121 -0
  38. package/dist/commands/digest.js.map +1 -0
  39. package/dist/commands/discover.d.ts +2 -0
  40. package/dist/commands/discover.js +25 -8
  41. package/dist/commands/discover.js.map +1 -1
  42. package/dist/commands/events.js +2 -1
  43. package/dist/commands/events.js.map +1 -1
  44. package/dist/commands/explain.d.ts +1 -1
  45. package/dist/commands/explain.js +18 -15
  46. package/dist/commands/explain.js.map +1 -1
  47. package/dist/commands/facet.d.ts +29 -0
  48. package/dist/commands/facet.js +113 -0
  49. package/dist/commands/facet.js.map +1 -0
  50. package/dist/commands/graph.js +2 -1
  51. package/dist/commands/graph.js.map +1 -1
  52. package/dist/commands/import.d.ts +38 -0
  53. package/dist/commands/import.js +440 -0
  54. package/dist/commands/import.js.map +1 -0
  55. package/dist/commands/init.js +35 -16
  56. package/dist/commands/init.js.map +1 -1
  57. package/dist/commands/keys.js +3 -4
  58. package/dist/commands/keys.js.map +1 -1
  59. package/dist/commands/knowledge.d.ts +2 -0
  60. package/dist/commands/knowledge.js +61 -9
  61. package/dist/commands/knowledge.js.map +1 -1
  62. package/dist/commands/launch.d.ts +50 -0
  63. package/dist/commands/launch.js +790 -0
  64. package/dist/commands/launch.js.map +1 -0
  65. package/dist/commands/lens.d.ts +45 -0
  66. package/dist/commands/lens.js +386 -0
  67. package/dist/commands/lens.js.map +1 -0
  68. package/dist/commands/market.d.ts +209 -0
  69. package/dist/commands/market.js +1368 -0
  70. package/dist/commands/market.js.map +1 -0
  71. package/dist/commands/mcp.d.ts +42 -0
  72. package/dist/commands/mcp.js +184 -0
  73. package/dist/commands/mcp.js.map +1 -0
  74. package/dist/commands/observe.js +14 -11
  75. package/dist/commands/observe.js.map +1 -1
  76. package/dist/commands/open.d.ts +21 -4
  77. package/dist/commands/open.js +45 -4
  78. package/dist/commands/open.js.map +1 -1
  79. package/dist/commands/pod.d.ts +100 -0
  80. package/dist/commands/pod.js +359 -0
  81. package/dist/commands/pod.js.map +1 -0
  82. package/dist/commands/pods.d.ts +1 -0
  83. package/dist/commands/pods.js +77 -15
  84. package/dist/commands/pods.js.map +1 -1
  85. package/dist/commands/proposals-actions.js +40 -3
  86. package/dist/commands/proposals-actions.js.map +1 -1
  87. package/dist/commands/purge.d.ts +23 -0
  88. package/dist/commands/purge.js +148 -0
  89. package/dist/commands/purge.js.map +1 -0
  90. package/dist/commands/raycast.d.ts +15 -0
  91. package/dist/commands/raycast.js +153 -0
  92. package/dist/commands/raycast.js.map +1 -0
  93. package/dist/commands/sessions.js +45 -21
  94. package/dist/commands/sessions.js.map +1 -1
  95. package/dist/commands/skill-manage.d.ts +21 -0
  96. package/dist/commands/skill-manage.js +195 -0
  97. package/dist/commands/skill-manage.js.map +1 -0
  98. package/dist/commands/skills-commands.js +2 -1
  99. package/dist/commands/skills-commands.js.map +1 -1
  100. package/dist/commands/skills.js +4 -3
  101. package/dist/commands/skills.js.map +1 -1
  102. package/dist/commands/status.d.ts +3 -1
  103. package/dist/commands/status.js +166 -14
  104. package/dist/commands/status.js.map +1 -1
  105. package/dist/commands/statusline.d.ts +24 -0
  106. package/dist/commands/statusline.js +450 -0
  107. package/dist/commands/statusline.js.map +1 -0
  108. package/dist/commands/subscribe.js +2 -2
  109. package/dist/commands/subscribe.js.map +1 -1
  110. package/dist/commands/tools.d.ts +30 -0
  111. package/dist/commands/tools.js +315 -0
  112. package/dist/commands/tools.js.map +1 -0
  113. package/dist/commands/versions.d.ts +27 -0
  114. package/dist/commands/versions.js +277 -0
  115. package/dist/commands/versions.js.map +1 -0
  116. package/dist/commands/view.js +3 -2
  117. package/dist/commands/view.js.map +1 -1
  118. package/dist/commands/whoami.d.ts +21 -0
  119. package/dist/commands/whoami.js +129 -0
  120. package/dist/commands/whoami.js.map +1 -0
  121. package/dist/index.js +776 -60
  122. package/dist/index.js.map +1 -1
  123. package/dist/lib/approval-poll.d.ts +42 -0
  124. package/dist/lib/approval-poll.js +52 -0
  125. package/dist/lib/approval-poll.js.map +1 -0
  126. package/dist/lib/auth.d.ts +29 -6
  127. package/dist/lib/auth.js +105 -94
  128. package/dist/lib/auth.js.map +1 -1
  129. package/dist/lib/bundle-version.d.ts +11 -0
  130. package/dist/lib/bundle-version.js +33 -0
  131. package/dist/lib/bundle-version.js.map +1 -0
  132. package/dist/lib/capture-lane.d.ts +30 -12
  133. package/dist/lib/capture-lane.js +71 -14
  134. package/dist/lib/capture-lane.js.map +1 -1
  135. package/dist/lib/cp-packages.d.ts +121 -0
  136. package/dist/lib/cp-packages.js +218 -0
  137. package/dist/lib/cp-packages.js.map +1 -0
  138. package/dist/lib/describe-lens.d.ts +46 -0
  139. package/dist/lib/describe-lens.js +33 -0
  140. package/dist/lib/describe-lens.js.map +1 -0
  141. package/dist/lib/hub-client.d.ts +78 -1
  142. package/dist/lib/hub-client.js +474 -22
  143. package/dist/lib/hub-client.js.map +1 -1
  144. package/dist/lib/installed.d.ts +51 -0
  145. package/dist/lib/installed.js +70 -0
  146. package/dist/lib/installed.js.map +1 -0
  147. package/dist/lib/next-steps.d.ts +61 -0
  148. package/dist/lib/next-steps.js +146 -0
  149. package/dist/lib/next-steps.js.map +1 -0
  150. package/dist/lib/pod.d.ts +91 -19
  151. package/dist/lib/pod.js +222 -56
  152. package/dist/lib/pod.js.map +1 -1
  153. package/dist/lib/project-ref.d.ts +95 -0
  154. package/dist/lib/project-ref.js +144 -0
  155. package/dist/lib/project-ref.js.map +1 -0
  156. package/dist/lib/project.d.ts +35 -0
  157. package/dist/lib/project.js +39 -0
  158. package/dist/lib/project.js.map +1 -0
  159. package/dist/lib/session-lens.d.ts +33 -0
  160. package/dist/lib/session-lens.js +76 -0
  161. package/dist/lib/session-lens.js.map +1 -0
  162. package/dist/lib/skill-import.d.ts +40 -0
  163. package/dist/lib/skill-import.js +203 -0
  164. package/dist/lib/skill-import.js.map +1 -0
  165. package/dist/lib/skills-installer.d.ts +17 -6
  166. package/dist/lib/skills-installer.js +133 -19
  167. package/dist/lib/skills-installer.js.map +1 -1
  168. package/dist/lib/suite.d.ts +28 -0
  169. package/dist/lib/suite.js +29 -0
  170. package/dist/lib/suite.js.map +1 -0
  171. package/dist/lib/superwhisper-import.d.ts +40 -0
  172. package/dist/lib/superwhisper-import.js +389 -0
  173. package/dist/lib/superwhisper-import.js.map +1 -0
  174. package/dist/lib/targets.d.ts +49 -1
  175. package/dist/lib/targets.js +420 -288
  176. package/dist/lib/targets.js.map +1 -1
  177. package/dist/lib/unwrapList.d.ts +1 -0
  178. package/dist/lib/unwrapList.js +20 -0
  179. package/dist/lib/unwrapList.js.map +1 -0
  180. package/dist/utils/logger.d.ts +2 -0
  181. package/dist/utils/logger.js +10 -2
  182. package/dist/utils/logger.js.map +1 -1
  183. package/package.json +9 -4
  184. package/skills/agent-os/SKILL.md +212 -0
  185. package/skills/manifest.json +5 -0
  186. package/skills/onboard/SKILL.md +186 -0
  187. package/skills/synap/SKILL.md +1182 -37
  188. package/skills/synap/_order.txt +37 -0
  189. package/skills/synap/_skill.yaml +24 -0
  190. package/skills/synap/authentication.md +10 -0
  191. package/skills/synap/automations.md +264 -0
  192. package/skills/synap/capabilities.md +107 -0
  193. package/skills/synap/capture.md +10 -0
  194. package/skills/synap/cli-operations.md +107 -0
  195. package/skills/synap/common-mistakes.md +12 -0
  196. package/skills/synap/creative-loop.md +43 -0
  197. package/skills/synap/crm.md +117 -0
  198. package/skills/synap/diagnostics.md +35 -0
  199. package/skills/synap/digesting-a-channel.md +38 -0
  200. package/skills/synap/document-embeds.md +123 -0
  201. package/skills/synap/escalation-ladder.md +71 -0
  202. package/skills/synap/focus-sessions.md +47 -0
  203. package/skills/synap/governance-rules.md +64 -0
  204. package/skills/synap/governance.md +6 -6
  205. package/skills/synap/graph-gardening.md +21 -0
  206. package/skills/synap/inline-patterns.md +38 -0
  207. package/skills/synap/lenses.md +38 -0
  208. package/skills/synap/linking-principle.md +39 -0
  209. package/skills/synap/linking.md +1 -0
  210. package/skills/synap/mental-model.md +45 -0
  211. package/skills/synap/more.md +7 -0
  212. package/skills/synap/multi-entity-capture.md +10 -0
  213. package/skills/synap/next-action.md +37 -0
  214. package/skills/synap/north-star.md +17 -0
  215. package/skills/synap/operating-mode-rules.md +45 -0
  216. package/skills/synap/operating-mode.md +9 -0
  217. package/skills/synap/quick-reference.md +67 -0
  218. package/skills/synap/reading.md +43 -0
  219. package/skills/synap/recap.md +21 -0
  220. package/skills/synap/reflexes.md +46 -0
  221. package/skills/synap/response-style.md +21 -0
  222. package/skills/synap/scope.md +13 -0
  223. package/skills/synap/showing.md +17 -0
  224. package/skills/synap/user-model.md +25 -0
  225. package/skills/synap/viewframe-cells.md +290 -0
  226. package/skills/synap/work-flow.md +113 -0
  227. package/skills/synap/worked-examples.md +53 -0
  228. package/skills/synap/workspace-design.md +45 -0
  229. package/skills/synap/workspace-edges.md +49 -0
  230. package/skills/synap/writes.md +156 -0
  231. package/skills/synap-schema/SKILL.md +97 -6
  232. package/skills/synap-schema/_order.txt +13 -0
  233. package/skills/synap-schema/_skill.yaml +22 -0
  234. package/skills/synap-schema/before-you-touch.md +14 -0
  235. package/skills/synap-schema/common-mistakes.md +9 -0
  236. package/skills/synap-schema/creating-profiles.md +17 -0
  237. package/skills/synap-schema/discover-profiles.md +24 -0
  238. package/skills/synap-schema/entity-scope.md +8 -0
  239. package/skills/synap-schema/extend-vs-create.md +31 -0
  240. package/skills/synap-schema/more.md +6 -0
  241. package/skills/synap-schema/overlay-properties.md +22 -0
  242. package/skills/synap-schema/profiles.md +3 -0
  243. package/skills/synap-schema/property-defs.md +29 -0
  244. package/skills/synap-schema/read-before-write.md +50 -0
  245. package/skills/synap-schema/relations.md +18 -0
  246. package/skills/synap-schema/worked-example.md +30 -0
  247. package/skills/synap-ui/SKILL.md +26 -2
  248. package/skills/synap-ui/_order.txt +13 -0
  249. package/skills/synap-ui/_skill.yaml +23 -0
  250. package/skills/synap-ui/ai-companion.md +27 -0
  251. package/skills/synap-ui/arranging-bento.md +8 -0
  252. package/skills/synap-ui/before-you-build.md +20 -0
  253. package/skills/synap-ui/bento-layouts.md +35 -0
  254. package/skills/synap-ui/common-mistakes.md +10 -0
  255. package/skills/synap-ui/creating-views.md +26 -0
  256. package/skills/synap-ui/four-builds.md +24 -0
  257. package/skills/synap-ui/more.md +7 -0
  258. package/skills/synap-ui/proposing-vs-extending.md +11 -0
  259. package/skills/synap-ui/view-list.md +24 -0
  260. package/skills/synap-ui/views.md +3 -0
  261. package/skills/synap-ui/worked-example.md +18 -0
  262. package/skills/synap-ui/workspaces.md +47 -0
  263. package/templates/automations/bookmark-enrichment.automation.json +44 -0
  264. package/templates/automations/mail-feed.automation.json +86 -0
  265. package/templates/automations/url-bookmark-capture.automation.json +70 -0
  266. package/templates/skills/README.md +21 -0
  267. package/templates/skills/authoring-automations/SKILL.md +95 -0
  268. package/templates/skills/authoring-automations/reference/node-matrix.md +49 -0
  269. package/templates/skills/authoring-capabilities/SKILL.md +93 -0
  270. package/templates/skills/authoring-capabilities/reference/template-anatomy.md +70 -0
  271. package/templates/skills/authoring-playbooks/SKILL.md +102 -0
  272. package/templates/skills/authoring-playbooks/reference/stages-contract.md +35 -0
  273. package/templates/skills/authoring-playbooks/reference/worked-example.md +64 -0
  274. package/templates/skills/bookmark-enrichment/SKILL.md +40 -0
  275. package/templates/skills/coordinating-agents/SKILL.md +32 -0
  276. package/templates/skills/coordinating-branches/SKILL.md +27 -0
  277. package/templates/skills/mapping-the-server/SKILL.md +54 -0
  278. package/templates/skills/reading-client-progress/SKILL.md +65 -0
  279. package/templates/skills/routing-to-channels/SKILL.md +54 -0
  280. package/templates/skills/stellar-scf-grants-advisor/ASSOCIATE-CHEATSHEET.md +133 -0
  281. package/templates/skills/stellar-scf-grants-advisor/ASSOCIATE-ONBOARDING-GUIDE.md +761 -0
  282. package/templates/skills/stellar-scf-grants-advisor/CLIENT-FAQ.md +181 -0
  283. package/templates/skills/stellar-scf-grants-advisor/PARTNER-HANDOVER.md +130 -0
  284. package/templates/skills/stellar-scf-grants-advisor/SKILL.md +102 -0
  285. package/templates/skills/stellar-scf-grants-advisor/examples/README.md +43 -0
  286. package/templates/skills/stellar-scf-grants-advisor/examples/chat-summary-templates.md +158 -0
  287. package/templates/skills/stellar-scf-grants-advisor/examples/corpus-comparable-rows.md +136 -0
  288. package/templates/skills/stellar-scf-grants-advisor/examples/q10-team-rewrites.md +109 -0
  289. package/templates/skills/stellar-scf-grants-advisor/examples/q2-description-rewrites.md +88 -0
  290. package/templates/skills/stellar-scf-grants-advisor/examples/q6-integration-rewrites.md +107 -0
  291. package/templates/skills/stellar-scf-grants-advisor/examples/tranche-structures.md +176 -0
  292. package/templates/skills/stellar-scf-grants-advisor/reference/01-methodology.md +96 -0
  293. package/templates/skills/stellar-scf-grants-advisor/reference/02-scoring-framework.md +199 -0
  294. package/templates/skills/stellar-scf-grants-advisor/reference/03-rejection-patterns.md +241 -0
  295. package/templates/skills/stellar-scf-grants-advisor/reference/04-winner-patterns.md +120 -0
  296. package/templates/skills/stellar-scf-grants-advisor/reference/05-comeback-patterns.md +92 -0
  297. package/templates/skills/stellar-scf-grants-advisor/reference/06-budget-benchmarks.md +125 -0
  298. package/templates/skills/stellar-scf-grants-advisor/reference/07-integration-list.md +147 -0
  299. package/templates/skills/stellar-scf-grants-advisor/reference/08-abstract-fields.md +258 -0
  300. package/templates/skills/stellar-scf-grants-advisor/reference/09-build-fields.md +259 -0
  301. package/templates/skills/stellar-scf-grants-advisor/reference/10-corpus-winners.md +135 -0
  302. package/templates/skills/stellar-scf-grants-advisor/reference/11-corpus-rejects.md +267 -0
  303. package/templates/skills/stellar-scf-grants-advisor/reference/12-client-communication.md +131 -0
  304. package/templates/skills/stellar-scf-grants-advisor/reference/13-excel-output-spec.md +199 -0
  305. package/templates/skills/stellar-scf-grants-advisor/reference/14-worked-examples.md +160 -0
  306. package/templates/skills/stellar-scf-grants-advisor/templates/abstract-review-builder.py +253 -0
  307. package/templates/skills/stellar-scf-grants-advisor/templates/build-review-builder.py +213 -0
  308. package/dist/commands/connectors.d.ts +0 -31
  309. package/dist/commands/connectors.js +0 -276
  310. package/dist/commands/connectors.js.map +0 -1
  311. package/dist/commands/finish.d.ts +0 -25
  312. package/dist/commands/finish.js +0 -274
  313. package/dist/commands/finish.js.map +0 -1
  314. package/dist/commands/openclaw.d.ts +0 -40
  315. package/dist/commands/openclaw.js +0 -1148
  316. package/dist/commands/openclaw.js.map +0 -1
  317. package/dist/commands/security-audit.d.ts +0 -12
  318. package/dist/commands/security-audit.js +0 -100
  319. package/dist/commands/security-audit.js.map +0 -1
  320. package/dist/lib/hardening.d.ts +0 -18
  321. package/dist/lib/hardening.js +0 -214
  322. package/dist/lib/hardening.js.map +0 -1
  323. package/node_modules/@synap/hub-rest-client/dist/index.cjs +0 -881
  324. package/node_modules/@synap/hub-rest-client/dist/index.d.cts +0 -907
  325. package/node_modules/@synap/hub-rest-client/dist/index.d.ts +0 -907
  326. package/node_modules/@synap/hub-rest-client/dist/index.js +0 -851
  327. package/node_modules/@synap/hub-rest-client/package.json +0 -45
  328. package/node_modules/@synap/hub-rest-client/src/client.ts +0 -1143
  329. package/node_modules/@synap/hub-rest-client/src/errors.ts +0 -30
  330. package/node_modules/@synap/hub-rest-client/src/index.ts +0 -111
  331. package/node_modules/@synap/hub-rest-client/src/setup.ts +0 -77
  332. package/node_modules/@synap/hub-rest-client/src/types.ts +0 -639
@@ -0,0 +1,389 @@
1
+ /**
2
+ * Superwhisper store-first import — pair meta.json + output.wav into pod-wide
3
+ * notes with optional audio provenance. No AI structure on the WAV (IS STT is
4
+ * a stub); transcript comes from Superwhisper's meta.
5
+ *
6
+ * Idempotency: local ledger (~/.synap/import-ledger/superwhisper.json) maps
7
+ * recordingId → entityId so resume/re-run skips completed units. Server-side
8
+ * external_links land in Wave 3; ledger is the v1 resume story.
9
+ */
10
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync, statSync, } from "node:fs";
11
+ import { join, basename } from "node:path";
12
+ import { homedir } from "node:os";
13
+ import chalk from "chalk";
14
+ import { log } from "../utils/logger.js";
15
+ import { resolveHubConfig, resolveUserId, hubPost, hubPostMultipartRetryable, } from "./hub-client.js";
16
+ const LEDGER_DIR = join(homedir(), ".synap", "import-ledger");
17
+ const LEDGER_PATH = join(LEDGER_DIR, "superwhisper.json");
18
+ /** Matches backend SOURCE_BLOB_MAX_BYTES. */
19
+ const AUDIO_MAX_BYTES = 32 * 1024 * 1024;
20
+ function loadLedger() {
21
+ try {
22
+ if (!existsSync(LEDGER_PATH))
23
+ return { version: 1, entries: {} };
24
+ const raw = JSON.parse(readFileSync(LEDGER_PATH, "utf8"));
25
+ if (!raw || raw.version !== 1 || typeof raw.entries !== "object") {
26
+ return { version: 1, entries: {} };
27
+ }
28
+ return raw;
29
+ }
30
+ catch {
31
+ return { version: 1, entries: {} };
32
+ }
33
+ }
34
+ function saveLedger(ledger) {
35
+ mkdirSync(LEDGER_DIR, { recursive: true });
36
+ writeFileSync(LEDGER_PATH, JSON.stringify(ledger, null, 2), "utf8");
37
+ }
38
+ function transcriptFromMeta(meta) {
39
+ const result = typeof meta.result === "string" ? meta.result.trim() : "";
40
+ if (result)
41
+ return result;
42
+ const segs = Array.isArray(meta.segments) ? meta.segments : [];
43
+ return segs
44
+ .map((s) => s && typeof s === "object" && typeof s.text === "string"
45
+ ? s.text
46
+ : "")
47
+ .filter(Boolean)
48
+ .join(" ")
49
+ .trim();
50
+ }
51
+ function titleFromTranscript(transcript, datetime, id) {
52
+ const line = transcript.split(/\n/).map((l) => l.trim()).find(Boolean) ?? "";
53
+ if (line.length >= 8) {
54
+ return line.length > 80 ? `${line.slice(0, 79)}…` : line;
55
+ }
56
+ if (datetime)
57
+ return `Voice note ${datetime}`;
58
+ return `Superwhisper ${id ?? "recording"}`;
59
+ }
60
+ /** Expand a Superwhisper recordings root (or a single clip dir) into units. */
61
+ export function collectSuperwhisperUnits(root) {
62
+ if (!existsSync(root)) {
63
+ throw new Error(`Path not found: ${root}`);
64
+ }
65
+ const st = statSync(root);
66
+ const dirs = [];
67
+ if (st.isDirectory()) {
68
+ // Single clip dir: has meta.json at root
69
+ if (existsSync(join(root, "meta.json"))) {
70
+ dirs.push(root);
71
+ }
72
+ else {
73
+ let entries = [];
74
+ try {
75
+ entries = readdirSync(root, { withFileTypes: true });
76
+ }
77
+ catch (e) {
78
+ throw new Error(`Cannot read directory: ${e.message}`);
79
+ }
80
+ for (const e of entries) {
81
+ if (!e.isDirectory() || e.name.startsWith("."))
82
+ continue;
83
+ const full = join(root, e.name);
84
+ if (existsSync(join(full, "meta.json")))
85
+ dirs.push(full);
86
+ }
87
+ }
88
+ }
89
+ else {
90
+ throw new Error(`Expected a Superwhisper recordings folder, got a file: ${root}`);
91
+ }
92
+ const units = [];
93
+ for (const dir of dirs) {
94
+ const recordingId = basename(dir);
95
+ const metaPath = join(dir, "meta.json");
96
+ let meta = {};
97
+ try {
98
+ meta = JSON.parse(readFileSync(metaPath, "utf8"));
99
+ }
100
+ catch {
101
+ continue;
102
+ }
103
+ const transcript = transcriptFromMeta(meta);
104
+ const wavPath = existsSync(join(dir, "output.wav"))
105
+ ? join(dir, "output.wav")
106
+ : null;
107
+ const wavSize = wavPath ? statSync(wavPath).size : 0;
108
+ const datetime = typeof meta.datetime === "string" ? meta.datetime : undefined;
109
+ units.push({
110
+ recordingId,
111
+ dir,
112
+ metaPath,
113
+ wavPath,
114
+ wavSize,
115
+ datetime,
116
+ language: typeof meta.languageSelected === "string"
117
+ ? meta.languageSelected
118
+ : undefined,
119
+ duration: typeof meta.duration === "number" ? meta.duration : undefined,
120
+ modeName: typeof meta.modeName === "string" ? meta.modeName : undefined,
121
+ transcript,
122
+ title: titleFromTranscript(transcript, datetime, recordingId),
123
+ });
124
+ }
125
+ // Stable order by recording id (unix-ish)
126
+ units.sort((a, b) => a.recordingId.localeCompare(b.recordingId));
127
+ return units;
128
+ }
129
+ function unitProperties(unit) {
130
+ return {
131
+ source: "superwhisper",
132
+ recordingId: unit.recordingId,
133
+ datetime: unit.datetime,
134
+ language: unit.language,
135
+ duration: unit.duration,
136
+ modeName: unit.modeName,
137
+ localPath: unit.dir,
138
+ hasTranscript: Boolean(unit.transcript),
139
+ };
140
+ }
141
+ function buildStoreUnitForm(unit, withAudio) {
142
+ const form = new FormData();
143
+ form.append("title", unit.title);
144
+ form.append("profileSlug", "note");
145
+ form.append("source", "cli");
146
+ if (unit.transcript)
147
+ form.append("content", unit.transcript);
148
+ else
149
+ form.append("description", "Empty Superwhisper transcript");
150
+ form.append("properties", JSON.stringify(unitProperties(unit)));
151
+ let audioSkippedReason;
152
+ if (withAudio && unit.wavPath) {
153
+ if (unit.wavSize > AUDIO_MAX_BYTES) {
154
+ audioSkippedReason = `over_limit_${AUDIO_MAX_BYTES}`;
155
+ }
156
+ else if (unit.wavSize === 0) {
157
+ audioSkippedReason = "empty_wav";
158
+ }
159
+ else {
160
+ const buf = readFileSync(unit.wavPath);
161
+ form.append("file", new File([buf], "output.wav", { type: "audio/wav" }));
162
+ }
163
+ }
164
+ else if (withAudio && !unit.wavPath) {
165
+ audioSkippedReason = "no_wav";
166
+ }
167
+ return { form, audioSkippedReason };
168
+ }
169
+ /** Prefer 1-request store-unit; fall back to create + source-file if 404. */
170
+ let storeUnitMode = "unknown";
171
+ async function storeUnit(unit, cfg, userId, withAudio) {
172
+ // Combined door: 1 auth hit per unit (entity + optional WAV).
173
+ if (storeUnitMode !== "two-step") {
174
+ try {
175
+ // Rebuild form on each 429 retry (body is one-shot).
176
+ const skipReason = buildStoreUnitForm(unit, withAudio).audioSkippedReason;
177
+ const res = (await hubPostMultipartRetryable("/import/store-unit", () => buildStoreUnitForm(unit, withAudio).form, cfg, 180_000));
178
+ storeUnitMode = "combined";
179
+ const entityId = String(res.id ?? res.entityId ?? "");
180
+ if (!entityId) {
181
+ throw new Error(`store-unit returned no id: ${JSON.stringify(res).slice(0, 200)}`);
182
+ }
183
+ const hasAudio = Boolean(res.audio);
184
+ const audioSkippedReason = skipReason ??
185
+ (typeof res.audioSkippedReason === "string"
186
+ ? res.audioSkippedReason
187
+ : undefined);
188
+ return {
189
+ entityId,
190
+ recordingId: unit.recordingId,
191
+ storedAt: new Date().toISOString(),
192
+ hasAudio,
193
+ audioSkippedReason,
194
+ };
195
+ }
196
+ catch (e) {
197
+ const msg = e.message;
198
+ // Only fall back when the combined door is missing (not yet deployed).
199
+ if (msg.includes("HTTP 404") || msg.includes("HTTP 405")) {
200
+ storeUnitMode = "two-step";
201
+ console.error("[hub] /import/store-unit not available — falling back to 2-step (deploy backend for 1-req/unit)");
202
+ }
203
+ else {
204
+ throw e;
205
+ }
206
+ }
207
+ }
208
+ // Two-step fallback (pre-deploy pods): POST /entities + POST …/source-file.
209
+ const createRes = (await hubPost("/entities", {
210
+ userId,
211
+ profileSlug: "note",
212
+ title: unit.title,
213
+ content: unit.transcript || undefined,
214
+ description: unit.transcript
215
+ ? undefined
216
+ : "Empty Superwhisper transcript",
217
+ properties: unitProperties(unit),
218
+ source: "cli",
219
+ }, cfg, 60_000));
220
+ const entityId = String(createRes.id ??
221
+ createRes.entity?.id ??
222
+ "");
223
+ if (!entityId) {
224
+ throw new Error(`Create entity returned no id: ${JSON.stringify(createRes).slice(0, 200)}`);
225
+ }
226
+ let hasAudio = false;
227
+ let audioSkippedReason;
228
+ if (withAudio && unit.wavPath) {
229
+ if (unit.wavSize > AUDIO_MAX_BYTES) {
230
+ audioSkippedReason = `over_limit_${AUDIO_MAX_BYTES}`;
231
+ }
232
+ else if (unit.wavSize === 0) {
233
+ audioSkippedReason = "empty_wav";
234
+ }
235
+ else {
236
+ const buf = readFileSync(unit.wavPath);
237
+ await hubPostMultipartRetryable(`/entities/${entityId}/source-file`, () => {
238
+ const form = new FormData();
239
+ form.append("file", new File([buf], "output.wav", { type: "audio/wav" }));
240
+ return form;
241
+ }, cfg, 180_000);
242
+ hasAudio = true;
243
+ }
244
+ }
245
+ else if (withAudio && !unit.wavPath) {
246
+ audioSkippedReason = "no_wav";
247
+ }
248
+ return {
249
+ entityId,
250
+ recordingId: unit.recordingId,
251
+ storedAt: new Date().toISOString(),
252
+ hasAudio,
253
+ audioSkippedReason,
254
+ };
255
+ }
256
+ /** Run store-first Superwhisper import for one or more roots. */
257
+ export async function importSuperwhisperStoreFirst(roots, opts) {
258
+ const cfg = await resolveHubConfig(opts);
259
+ const userId = await resolveUserId(cfg);
260
+ const withAudio = opts.withAudio !== false; // default true when store-first superwhisper
261
+ // Default concurrency 1 — each unit is 2 Hub auth hits; concurrent workers
262
+ // burn the per-key rate window and cascade 429s. Override with --concurrency 2
263
+ // only after the raised server limit is deployed.
264
+ const concurrency = Math.max(1, Math.min(opts.concurrency ?? 1, 4));
265
+ const resume = opts.resume !== false;
266
+ let units = [];
267
+ for (const root of roots) {
268
+ units = units.concat(collectSuperwhisperUnits(root));
269
+ }
270
+ // Dedupe by recordingId
271
+ const byId = new Map();
272
+ for (const u of units)
273
+ byId.set(u.recordingId, u);
274
+ units = [...byId.values()].sort((a, b) => a.recordingId.localeCompare(b.recordingId));
275
+ if (typeof opts.limit === "number" && opts.limit > 0) {
276
+ units = units.slice(0, opts.limit);
277
+ }
278
+ const ledger = loadLedger();
279
+ const pending = resume
280
+ ? units.filter((u) => !ledger.entries[u.recordingId])
281
+ : units;
282
+ const skippedLedger = units.length - pending.length;
283
+ if (opts.json) {
284
+ // dry-run / status style
285
+ }
286
+ else {
287
+ const rpm = process.env.SYNAP_HUB_RPM && parseInt(process.env.SYNAP_HUB_RPM, 10);
288
+ log.info(`Superwhisper store-first: ${units.length} unit(s)` +
289
+ (skippedLedger ? ` · ${skippedLedger} already in ledger` : "") +
290
+ ` · ${pending.length} to process` +
291
+ (withAudio ? " · with audio" : " · transcript only") +
292
+ (opts.dryRun ? " · dry-run" : "") +
293
+ ` · pace ≤${Number.isFinite(rpm) && rpm > 0 ? rpm : 80} Hub req/min` +
294
+ (process.env.SYNAP_HUB_RPM
295
+ ? ""
296
+ : " (set SYNAP_HUB_RPM=1000 after server redeploy)"));
297
+ }
298
+ if (opts.dryRun) {
299
+ const oversize = pending.filter((u) => u.wavSize > AUDIO_MAX_BYTES).length;
300
+ const emptyTx = pending.filter((u) => !u.transcript).length;
301
+ const totalWav = pending.reduce((n, u) => n + u.wavSize, 0);
302
+ if (opts.json) {
303
+ console.log(JSON.stringify({
304
+ mode: "superwhisper-store-first",
305
+ dryRun: true,
306
+ total: units.length,
307
+ pending: pending.length,
308
+ skippedLedger,
309
+ emptyTranscript: emptyTx,
310
+ oversizeAudio: oversize,
311
+ totalWavBytes: totalWav,
312
+ sample: pending.slice(0, 5).map((u) => ({
313
+ recordingId: u.recordingId,
314
+ title: u.title,
315
+ wavSize: u.wavSize,
316
+ transcriptLen: u.transcript.length,
317
+ })),
318
+ }, null, 2));
319
+ }
320
+ else {
321
+ log.heading("Dry run");
322
+ log.info(` pending=${pending.length} emptyTranscript=${emptyTx} oversizeAudio=${oversize} wavTotal=${(totalWav / 1e9).toFixed(2)}GB`);
323
+ for (const u of pending.slice(0, 8)) {
324
+ log.dim(` ${u.recordingId} ${(u.wavSize / 1e6).toFixed(2)}MB tx=${u.transcript.length} ${u.title.slice(0, 50)}`);
325
+ }
326
+ if (pending.length > 8)
327
+ log.dim(` … +${pending.length - 8} more`);
328
+ }
329
+ return;
330
+ }
331
+ if (!opts.yes && !opts.json) {
332
+ log.warn("This will create pod-wide notes (and optionally upload WAVs). Pass --yes to confirm.");
333
+ process.exit(1);
334
+ }
335
+ let stored = 0;
336
+ let failed = 0;
337
+ let audioOk = 0;
338
+ let audioSkipped = 0;
339
+ const errors = [];
340
+ // Simple concurrency pool
341
+ let idx = 0;
342
+ async function worker() {
343
+ while (idx < pending.length) {
344
+ const i = idx++;
345
+ const unit = pending[i];
346
+ try {
347
+ const entry = await storeUnit(unit, cfg, userId, withAudio);
348
+ ledger.entries[unit.recordingId] = entry;
349
+ saveLedger(ledger);
350
+ stored++;
351
+ if (entry.hasAudio)
352
+ audioOk++;
353
+ if (entry.audioSkippedReason)
354
+ audioSkipped++;
355
+ if (!opts.json) {
356
+ const n = stored + failed;
357
+ process.stdout.write(chalk.dim(`\r ${n}/${pending.length} stored=${stored} failed=${failed} audio=${audioOk}`));
358
+ }
359
+ }
360
+ catch (e) {
361
+ failed++;
362
+ const msg = e.message;
363
+ errors.push({ id: unit.recordingId, error: msg });
364
+ if (!opts.json) {
365
+ log.error(`\n ${unit.recordingId}: ${msg}`);
366
+ }
367
+ }
368
+ }
369
+ }
370
+ const workers = Array.from({ length: concurrency }, () => worker());
371
+ await Promise.all(workers);
372
+ if (!opts.json)
373
+ process.stdout.write("\n");
374
+ if (opts.json) {
375
+ console.log(JSON.stringify({ stored, failed, audioOk, audioSkipped, skippedLedger, errors }, null, 2));
376
+ }
377
+ else {
378
+ log.blank();
379
+ log.heading("Superwhisper import summary");
380
+ log.success(`${stored} stored · ${failed} failed · audio ok ${audioOk} · audio skipped ${audioSkipped} · ledger skips ${skippedLedger}`);
381
+ log.dim(`Ledger: ${LEDGER_PATH}`);
382
+ for (const e of errors.slice(0, 20)) {
383
+ log.dim(` ✗ ${e.id}: ${e.error}`);
384
+ }
385
+ }
386
+ if (failed > 0)
387
+ process.exit(1);
388
+ }
389
+ //# sourceMappingURL=superwhisper-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"superwhisper-import.js","sourceRoot":"","sources":["../../src/lib/superwhisper-import.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export interface TargetConnectionConfig {
13
13
  podUrl: string;
14
14
  apiKey: string;
15
15
  workspaceId?: string;
16
+ projectId?: string;
16
17
  agentUserId?: string;
17
18
  skills?: string[];
18
19
  }
@@ -29,6 +30,14 @@ export interface TargetInfo {
29
30
  }
30
31
  export declare const TARGETS: Record<TargetName, TargetInfo>;
31
32
  export declare function isTargetName(value: string): value is TargetName;
33
+ /**
34
+ * Build the pod's /mcp URL with optional scope lenses:
35
+ * ?workspaceId= — workspace lens (an app-lens of a project)
36
+ * ?projectId= — project focus lens (orthogonal; narrows every tool call)
37
+ * Both are opt-in and compose. Omitting both = pod-wide.
38
+ */
39
+ export declare function buildMcpUrl(podUrl: string, workspaceId?: string, projectId?: string): string;
40
+ export declare function configureAgentContext(podUrl: string, apiKey: string, agentType: string, agentUserId: string, info?: TargetInfo): Promise<void>;
32
41
  export declare function listTargets(): void;
33
42
  /**
34
43
  * Run the install flow for a target. Returns true on success.
@@ -51,9 +60,37 @@ export declare function resolveWorkspaceId(cfg: TargetConnectionConfig): Promise
51
60
  *
52
61
  * @param writeMcp — set false to skip the mcpServers entry (skills-only installs)
53
62
  */
54
- export declare function writeClaudeCodeEnv(cfg: Pick<TargetConnectionConfig, "podUrl" | "apiKey" | "workspaceId" | "agentUserId">, { writeMcp }?: {
63
+ export declare function writeClaudeCodeEnv(cfg: Pick<TargetConnectionConfig, "podUrl" | "apiKey" | "workspaceId" | "projectId" | "agentUserId">, { writeMcp }?: {
55
64
  writeMcp?: boolean;
56
65
  }): Promise<void>;
66
+ /**
67
+ * Provision an agent-owned API key for the given surface via POST /api/hub/setup/agent.
68
+ * When requireApproval is true the key is created inactive; the user must approve in the
69
+ * browser before this function returns.
70
+ * Throws on failure — callers must not silently fall back to a human key.
71
+ */
72
+ export declare function provisionAgentKey(podUrl: string, humanApiKey: string, agentType: string, { requireApproval, idempotent, }?: {
73
+ requireApproval?: boolean;
74
+ idempotent?: boolean;
75
+ }): Promise<{
76
+ hubApiKey: string;
77
+ agentUserId: string;
78
+ reused: boolean;
79
+ }>;
80
+ /**
81
+ * Enroll an agent user into the caller's workspaces via POST /api/hub/workspaces/enroll-agent.
82
+ * Non-fatal — logs on failure so connect flow is never blocked by enrollment errors.
83
+ *
84
+ * @param callerKey The key of the user whose workspaces to enroll into (pod profile key).
85
+ * @param agentUserId The agent user to enroll.
86
+ * @param workspaceId When set, enroll in that one workspace only; omit for all.
87
+ * @param opts.role Workspace role to grant the agent. Defaults to "editor" — the
88
+ * one safe default callers get unless they explicitly ask for another role.
89
+ */
90
+ export declare function enrollAgentIfNeeded(podUrl: string, callerKey: string, agentUserId: string, workspaceId?: string, opts?: {
91
+ quiet?: boolean;
92
+ role?: string;
93
+ }): Promise<void>;
57
94
  interface McpServerConfig {
58
95
  url?: string;
59
96
  command?: string;
@@ -75,7 +112,18 @@ export interface ProviderInstallConfig {
75
112
  }
76
113
  export declare function installOpencode(cfg: ProviderInstallConfig & {
77
114
  workspaceId?: string;
115
+ projectId?: string;
78
116
  }): Promise<boolean>;
79
117
  export declare function installAider(cfg: ProviderInstallConfig): Promise<boolean>;
80
118
  export declare function writeMcpServerEntry(configPath: string, serverName: string, server: McpServerConfig): void;
119
+ /**
120
+ * Idempotent workspace governance prompt. Checks if the workspace already has
121
+ * aiGovernance configured — skips if set. Otherwise prompts for safe/normal/crazy
122
+ * and applies via PATCH /workspaces/:id/governance.
123
+ */
124
+ export type GovernancePreset = "safe" | "normal" | "crazy";
125
+ export declare function ensureAgentGovernance(cfg: {
126
+ podUrl: string;
127
+ apiKey: string;
128
+ }, agentUserId: string, presetMode?: GovernancePreset): Promise<void>;
81
129
  export {};