@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.
- package/README.md +23 -198
- package/dist/build-info.json +6 -0
- package/dist/commands/agent-run.js +3 -2
- package/dist/commands/agent-run.js.map +1 -1
- package/dist/commands/agents.d.ts +33 -17
- package/dist/commands/agents.js +203 -237
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/app.d.ts +143 -0
- package/dist/commands/app.js +523 -0
- package/dist/commands/app.js.map +1 -0
- package/dist/commands/automate.d.ts +21 -0
- package/dist/commands/automate.js +42 -0
- package/dist/commands/automate.js.map +1 -0
- package/dist/commands/automation-schema.test.d.ts +16 -0
- package/dist/commands/automation-schema.test.js +77 -0
- package/dist/commands/automation-schema.test.js.map +1 -0
- package/dist/commands/automation.d.ts +12 -0
- package/dist/commands/automation.js +80 -35
- package/dist/commands/automation.js.map +1 -1
- package/dist/commands/bridge-setup.d.ts +14 -1
- package/dist/commands/bridge-setup.js +392 -128
- package/dist/commands/bridge-setup.js.map +1 -1
- package/dist/commands/cap-connections.d.ts +4 -4
- package/dist/commands/cap-connections.js +14 -14
- package/dist/commands/cap-connections.js.map +1 -1
- package/dist/commands/capability.d.ts +2 -0
- package/dist/commands/capability.js +297 -176
- package/dist/commands/capability.js.map +1 -1
- package/dist/commands/catalog.d.ts +275 -0
- package/dist/commands/catalog.js +481 -0
- package/dist/commands/catalog.js.map +1 -0
- package/dist/commands/cell.d.ts +155 -8
- package/dist/commands/cell.js +416 -40
- package/dist/commands/cell.js.map +1 -1
- package/dist/commands/centrality.js +3 -14
- package/dist/commands/centrality.js.map +1 -1
- package/dist/commands/connect.d.ts +38 -13
- package/dist/commands/connect.js +68 -167
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/connections.d.ts +3 -2
- package/dist/commands/connections.js +95 -25
- package/dist/commands/connections.js.map +1 -1
- package/dist/commands/context.js +9 -2
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/data-extra.d.ts +34 -0
- package/dist/commands/data-extra.js +198 -25
- package/dist/commands/data-extra.js.map +1 -1
- package/dist/commands/data.d.ts +120 -2
- package/dist/commands/data.js +307 -24
- package/dist/commands/data.js.map +1 -1
- package/dist/commands/diagnose.d.ts +66 -4
- package/dist/commands/diagnose.js +329 -29
- package/dist/commands/diagnose.js.map +1 -1
- package/dist/commands/digest.js +2 -1
- package/dist/commands/digest.js.map +1 -1
- package/dist/commands/doc.d.ts +25 -4
- package/dist/commands/doc.js +100 -18
- package/dist/commands/doc.js.map +1 -1
- package/dist/commands/doctor.d.ts +130 -0
- package/dist/commands/doctor.js +814 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/events.js +3 -1
- package/dist/commands/events.js.map +1 -1
- package/dist/commands/explain.js +5 -5
- package/dist/commands/explain.js.map +1 -1
- package/dist/commands/graph.js +5 -3
- package/dist/commands/graph.js.map +1 -1
- package/dist/commands/import.d.ts +368 -13
- package/dist/commands/import.js +1096 -55
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/init.d.ts +20 -9
- package/dist/commands/init.js +433 -973
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/keys.d.ts +1 -0
- package/dist/commands/keys.js +15 -2
- package/dist/commands/keys.js.map +1 -1
- package/dist/commands/knowledge.d.ts +28 -6
- package/dist/commands/knowledge.js +358 -73
- package/dist/commands/knowledge.js.map +1 -1
- package/dist/commands/launch.js +2 -2
- package/dist/commands/launch.js.map +1 -1
- package/dist/commands/lens.d.ts +37 -1
- package/dist/commands/lens.js +193 -72
- package/dist/commands/lens.js.map +1 -1
- package/dist/commands/market-authoring.d.ts +72 -0
- package/dist/commands/market-authoring.js +566 -0
- package/dist/commands/market-authoring.js.map +1 -0
- package/dist/commands/market-official.d.ts +58 -0
- package/dist/commands/market-official.js +84 -0
- package/dist/commands/market-official.js.map +1 -0
- package/dist/commands/market.d.ts +419 -20
- package/dist/commands/market.js +2124 -193
- package/dist/commands/market.js.map +1 -1
- package/dist/commands/mcp.d.ts +70 -13
- package/dist/commands/mcp.js +308 -40
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/open.d.ts +39 -9
- package/dist/commands/open.js +80 -25
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/playbook.d.ts +42 -0
- package/dist/commands/playbook.js +162 -0
- package/dist/commands/playbook.js.map +1 -0
- package/dist/commands/pod.js +1 -1
- package/dist/commands/pod.js.map +1 -1
- package/dist/commands/pods.d.ts +19 -0
- package/dist/commands/pods.js +220 -85
- package/dist/commands/pods.js.map +1 -1
- package/dist/commands/proposals-actions.d.ts +62 -0
- package/dist/commands/proposals-actions.js +146 -8
- package/dist/commands/proposals-actions.js.map +1 -1
- package/dist/commands/proposals-await.d.ts +68 -0
- package/dist/commands/proposals-await.js +248 -0
- package/dist/commands/proposals-await.js.map +1 -0
- package/dist/commands/proton-setup.d.ts +73 -0
- package/dist/commands/proton-setup.js +577 -0
- package/dist/commands/proton-setup.js.map +1 -0
- package/dist/commands/providers.d.ts +23 -0
- package/dist/commands/providers.js +126 -1
- package/dist/commands/providers.js.map +1 -1
- package/dist/commands/raycast.js +6 -2
- package/dist/commands/raycast.js.map +1 -1
- package/dist/commands/rule.d.ts +150 -0
- package/dist/commands/rule.js +447 -0
- package/dist/commands/rule.js.map +1 -0
- package/dist/commands/session-wait.d.ts +111 -0
- package/dist/commands/session-wait.js +209 -0
- package/dist/commands/session-wait.js.map +1 -0
- package/dist/commands/sessions.d.ts +52 -0
- package/dist/commands/sessions.js +479 -58
- package/dist/commands/sessions.js.map +1 -1
- package/dist/commands/skill-manage.d.ts +21 -0
- package/dist/commands/skill-manage.js +136 -19
- package/dist/commands/skill-manage.js.map +1 -1
- package/dist/commands/skills.js +19 -1
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/status.d.ts +1 -4
- package/dist/commands/status.js +5 -34
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/statusline.backoff.test.d.ts +13 -0
- package/dist/commands/statusline.backoff.test.js +100 -0
- package/dist/commands/statusline.backoff.test.js.map +1 -0
- package/dist/commands/statusline.js +16 -9
- package/dist/commands/statusline.js.map +1 -1
- package/dist/commands/sync-status.d.ts +12 -0
- package/dist/commands/sync-status.js +125 -0
- package/dist/commands/sync-status.js.map +1 -0
- package/dist/commands/templates-retire.d.ts +34 -0
- package/dist/commands/templates-retire.js +192 -0
- package/dist/commands/templates-retire.js.map +1 -0
- package/dist/commands/tools.js +6 -21
- package/dist/commands/tools.js.map +1 -1
- package/dist/commands/tracks.d.ts +51 -0
- package/dist/commands/tracks.js +291 -0
- package/dist/commands/tracks.js.map +1 -0
- package/dist/commands/update.d.ts +3 -11
- package/dist/commands/update.js +5 -134
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/upload.d.ts +68 -0
- package/dist/commands/upload.js +257 -0
- package/dist/commands/upload.js.map +1 -0
- package/dist/commands/vendor.d.ts +28 -0
- package/dist/commands/vendor.js +110 -0
- package/dist/commands/vendor.js.map +1 -0
- package/dist/commands/versions.js +6 -0
- package/dist/commands/versions.js.map +1 -1
- package/dist/commands/view.js +10 -5
- package/dist/commands/view.js.map +1 -1
- package/dist/commands/whoami.d.ts +23 -3
- package/dist/commands/whoami.js +169 -23
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/worker.d.ts +122 -0
- package/dist/commands/worker.js +435 -0
- package/dist/commands/worker.js.map +1 -0
- package/dist/commands/worker.test.d.ts +1 -0
- package/dist/commands/worker.test.js +116 -0
- package/dist/commands/worker.test.js.map +1 -0
- package/dist/commands/workspace-ops.d.ts +35 -0
- package/dist/commands/workspace-ops.js +153 -0
- package/dist/commands/workspace-ops.js.map +1 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.js +1009 -171
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-connections.d.ts +31 -0
- package/dist/lib/agent-connections.js +33 -0
- package/dist/lib/agent-connections.js.map +1 -0
- package/dist/lib/agent-detect.d.ts +27 -0
- package/dist/lib/agent-detect.js +71 -0
- package/dist/lib/agent-detect.js.map +1 -0
- package/dist/lib/agent-door.d.ts +138 -0
- package/dist/lib/agent-door.js +426 -0
- package/dist/lib/agent-door.js.map +1 -0
- package/dist/lib/agents-config.d.ts +2 -0
- package/dist/lib/agents-config.js +4 -9
- package/dist/lib/agents-config.js.map +1 -1
- package/dist/lib/approval-poll.d.ts +31 -2
- package/dist/lib/approval-poll.js +20 -7
- package/dist/lib/approval-poll.js.map +1 -1
- package/dist/lib/atomic-file.d.ts +48 -0
- package/dist/lib/atomic-file.js +129 -0
- package/dist/lib/atomic-file.js.map +1 -0
- package/dist/lib/auth.d.ts +14 -9
- package/dist/lib/auth.js +44 -61
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/batch-approval.d.ts +85 -0
- package/dist/lib/batch-approval.js +170 -0
- package/dist/lib/batch-approval.js.map +1 -0
- package/dist/lib/capture-lane.d.ts +6 -5
- package/dist/lib/capture-lane.js +11 -8
- package/dist/lib/capture-lane.js.map +1 -1
- package/dist/lib/capture-structure.d.ts +342 -0
- package/dist/lib/capture-structure.js +295 -0
- package/dist/lib/capture-structure.js.map +1 -0
- package/dist/lib/catalog-templates.d.ts +59 -0
- package/dist/lib/catalog-templates.js +126 -0
- package/dist/lib/catalog-templates.js.map +1 -0
- package/dist/lib/cli-build.d.ts +19 -0
- package/dist/lib/cli-build.js +37 -0
- package/dist/lib/cli-build.js.map +1 -0
- package/dist/lib/conversation-headers.d.ts +18 -0
- package/dist/lib/conversation-headers.js +32 -0
- package/dist/lib/conversation-headers.js.map +1 -0
- package/dist/lib/cp-packages.d.ts +216 -4
- package/dist/lib/cp-packages.js +414 -11
- package/dist/lib/cp-packages.js.map +1 -1
- package/dist/lib/credential-class.d.ts +117 -0
- package/dist/lib/credential-class.js +116 -0
- package/dist/lib/credential-class.js.map +1 -0
- package/dist/lib/describe-lens.d.ts +35 -0
- package/dist/lib/describe-lens.js +40 -0
- package/dist/lib/describe-lens.js.map +1 -1
- package/dist/lib/device-connect.d.ts +125 -0
- package/dist/lib/device-connect.js +256 -0
- package/dist/lib/device-connect.js.map +1 -0
- package/dist/lib/directory-lens.d.ts +99 -0
- package/dist/lib/directory-lens.js +187 -0
- package/dist/lib/directory-lens.js.map +1 -0
- package/dist/lib/exporter-coverage.d.ts +71 -0
- package/dist/lib/exporter-coverage.js +97 -0
- package/dist/lib/exporter-coverage.js.map +1 -0
- package/dist/lib/hub-client.d.ts +43 -9
- package/dist/lib/hub-client.js +429 -65
- package/dist/lib/hub-client.js.map +1 -1
- package/dist/lib/id.d.ts +23 -0
- package/dist/lib/id.js +35 -0
- package/dist/lib/id.js.map +1 -0
- package/dist/lib/init-connect.d.ts +41 -0
- package/dist/lib/init-connect.js +75 -0
- package/dist/lib/init-connect.js.map +1 -0
- package/dist/lib/init-exit.d.ts +24 -0
- package/dist/lib/init-exit.js +41 -0
- package/dist/lib/init-exit.js.map +1 -0
- package/dist/lib/init-flow.d.ts +25 -0
- package/dist/lib/init-flow.js +40 -0
- package/dist/lib/init-flow.js.map +1 -0
- package/dist/lib/init-handoff.d.ts +16 -0
- package/dist/lib/init-handoff.js +19 -0
- package/dist/lib/init-handoff.js.map +1 -0
- package/dist/lib/init-output.d.ts +18 -0
- package/dist/lib/init-output.js +43 -0
- package/dist/lib/init-output.js.map +1 -0
- package/dist/lib/init-pod.d.ts +45 -0
- package/dist/lib/init-pod.js +36 -0
- package/dist/lib/init-pod.js.map +1 -0
- package/dist/lib/installed.d.ts +210 -11
- package/dist/lib/installed.js +234 -36
- package/dist/lib/installed.js.map +1 -1
- package/dist/lib/key-approval.d.ts +57 -0
- package/dist/lib/key-approval.js +117 -0
- package/dist/lib/key-approval.js.map +1 -0
- package/dist/lib/key-diagnosis.d.ts +56 -0
- package/dist/lib/key-diagnosis.js +227 -0
- package/dist/lib/key-diagnosis.js.map +1 -0
- package/dist/lib/key-doctor.d.ts +136 -0
- package/dist/lib/key-doctor.js +286 -0
- package/dist/lib/key-doctor.js.map +1 -0
- package/dist/lib/key-locations.d.ts +120 -0
- package/dist/lib/key-locations.js +326 -0
- package/dist/lib/key-locations.js.map +1 -0
- package/dist/lib/key-source.d.ts +66 -0
- package/dist/lib/key-source.js +106 -0
- package/dist/lib/key-source.js.map +1 -0
- package/dist/lib/key-state.d.ts +70 -0
- package/dist/lib/key-state.js +115 -0
- package/dist/lib/key-state.js.map +1 -0
- package/dist/lib/kind-package.d.ts +181 -0
- package/dist/lib/kind-package.js +679 -0
- package/dist/lib/kind-package.js.map +1 -0
- package/dist/lib/knowledge-title.d.ts +24 -0
- package/dist/lib/knowledge-title.js +46 -0
- package/dist/lib/knowledge-title.js.map +1 -0
- package/dist/lib/knowledge-title.test.d.ts +1 -0
- package/dist/lib/knowledge-title.test.js +34 -0
- package/dist/lib/knowledge-title.test.js.map +1 -0
- package/dist/lib/machine-instance.d.ts +64 -0
- package/dist/lib/machine-instance.js +142 -0
- package/dist/lib/machine-instance.js.map +1 -0
- package/dist/lib/mcp-bridge.d.ts +42 -0
- package/dist/lib/mcp-bridge.js +147 -0
- package/dist/lib/mcp-bridge.js.map +1 -0
- package/dist/lib/mcp-bridge.test.d.ts +1 -0
- package/dist/lib/mcp-bridge.test.js +90 -0
- package/dist/lib/mcp-bridge.test.js.map +1 -0
- package/dist/lib/mcp-call.d.ts +30 -0
- package/dist/lib/mcp-call.js +107 -0
- package/dist/lib/mcp-call.js.map +1 -0
- package/dist/lib/mcp-snippets.d.ts +53 -0
- package/dist/lib/mcp-snippets.js +82 -0
- package/dist/lib/mcp-snippets.js.map +1 -0
- package/dist/lib/next-steps.d.ts +8 -0
- package/dist/lib/next-steps.js +31 -1
- package/dist/lib/next-steps.js.map +1 -1
- package/dist/lib/package-wire.d.ts +179 -0
- package/dist/lib/package-wire.js +68 -0
- package/dist/lib/package-wire.js.map +1 -0
- package/dist/lib/pair-link.d.ts +38 -0
- package/dist/lib/pair-link.js +68 -0
- package/dist/lib/pair-link.js.map +1 -0
- package/dist/lib/pod-wide.d.ts +40 -0
- package/dist/lib/pod-wide.js +46 -0
- package/dist/lib/pod-wide.js.map +1 -0
- package/dist/lib/pod.d.ts +119 -115
- package/dist/lib/pod.js +206 -412
- package/dist/lib/pod.js.map +1 -1
- package/dist/lib/project-ref.d.ts +9 -3
- package/dist/lib/project-ref.js +10 -4
- package/dist/lib/project-ref.js.map +1 -1
- package/dist/lib/review-credential.d.ts +119 -0
- package/dist/lib/review-credential.js +147 -0
- package/dist/lib/review-credential.js.map +1 -0
- package/dist/lib/safe-open.d.ts +49 -0
- package/dist/lib/safe-open.js +119 -0
- package/dist/lib/safe-open.js.map +1 -0
- package/dist/lib/session-lens.d.ts +40 -1
- package/dist/lib/session-lens.js +54 -4
- package/dist/lib/session-lens.js.map +1 -1
- package/dist/lib/superwhisper-import.d.ts +8 -0
- package/dist/lib/superwhisper-import.js +14 -7
- package/dist/lib/superwhisper-import.js.map +1 -1
- package/dist/lib/superwhisper-title.test.d.ts +1 -0
- package/dist/lib/superwhisper-title.test.js +18 -0
- package/dist/lib/superwhisper-title.test.js.map +1 -0
- package/dist/lib/targets.d.ts +134 -10
- package/dist/lib/targets.js +962 -258
- package/dist/lib/targets.js.map +1 -1
- package/dist/lib/template-file.d.ts +78 -0
- package/dist/lib/template-file.js +140 -0
- package/dist/lib/template-file.js.map +1 -0
- package/dist/lib/template-lifecycle.d.ts +217 -0
- package/dist/lib/template-lifecycle.js +433 -0
- package/dist/lib/template-lifecycle.js.map +1 -0
- package/dist/lib/template-steps.d.ts +88 -0
- package/dist/lib/template-steps.js +118 -0
- package/dist/lib/template-steps.js.map +1 -0
- package/dist/lib/time-ago.d.ts +2 -0
- package/dist/lib/time-ago.js +15 -0
- package/dist/lib/time-ago.js.map +1 -0
- package/dist/utils/logger.js +5 -2
- package/dist/utils/logger.js.map +1 -1
- package/package.json +25 -18
- package/skills/README.md +12 -10
- package/skills/agent-os/SKILL.md +220 -99
- package/skills/manifest.json +2 -2
- package/skills/onboard/SKILL.md +61 -25
- package/skills/synap/README.md +5 -8
- package/skills/synap/SKILL.md +1185 -301
- package/skills/synap/_order.txt +7 -0
- package/skills/synap/_skill.yaml +1 -1
- package/skills/synap/automations.md +15 -0
- package/skills/synap/capture.md +54 -151
- package/skills/synap/cli-operations.md +24 -18
- package/skills/synap/common-mistakes.md +1 -0
- package/skills/synap/concepts.md +28 -0
- package/skills/synap/content-os.md +92 -0
- package/skills/synap/creative-loop.md +15 -10
- package/skills/synap/crm.md +21 -52
- package/skills/synap/digesting-a-channel.md +25 -0
- package/skills/synap/document-embeds.md +141 -47
- package/skills/synap/escalation-ladder.md +20 -10
- package/skills/synap/focus-sessions.md +47 -21
- package/skills/synap/from-intent.md +142 -0
- package/skills/synap/governance-rules.md +4 -4
- package/skills/synap/governance.md +10 -7
- package/skills/synap/hand-off.md +33 -0
- package/skills/synap/inline-patterns.md +15 -7
- package/skills/synap/lenses.md +33 -15
- package/skills/synap/linking.md +41 -40
- package/skills/synap/mcp-remote-servers.md +64 -0
- package/skills/synap/mental-model.md +24 -22
- package/skills/synap/multi-entity-capture.md +6 -4
- package/skills/synap/operating-mode-rules.md +1 -1
- package/skills/synap/processes.md +118 -0
- package/skills/synap/quick-reference.md +5 -1
- package/skills/synap/reading.md +3 -1
- package/skills/synap/reflexes.md +12 -42
- package/skills/synap/viewframe-cells.md +38 -5
- package/skills/synap/work-flow.md +1 -1
- package/skills/synap/work-model.md +96 -0
- package/skills/synap/worked-examples.md +21 -1
- package/skills/synap/workspace-design.md +14 -10
- package/skills/synap/writes.md +165 -35
- package/skills/synap/writing-titles.md +63 -0
- package/skills/synap-app/SKILL.md +319 -0
- package/skills/synap-app/_order.txt +5 -0
- package/skills/synap-app/_skill.yaml +20 -0
- package/skills/synap-app/creating-the-base-app.md +64 -0
- package/skills/synap-app/governance.md +42 -0
- package/skills/synap-app/install-commands.md +55 -0
- package/skills/synap-app/overview.md +50 -0
- package/skills/synap-app/using-the-sdk.md +73 -0
- package/skills/synap-design/SKILL.md +474 -0
- package/skills/synap-design/_order.txt +4 -0
- package/skills/synap-design/_skill.yaml +21 -0
- package/skills/synap-design/loop.md +134 -0
- package/skills/synap-design/overview.md +44 -0
- package/skills/synap-design/principles.md +130 -0
- package/skills/synap-design/system.md +133 -0
- package/skills/synap-market/SKILL.md +625 -0
- package/skills/synap-market/_order.txt +5 -0
- package/skills/synap-market/_skill.yaml +24 -0
- package/skills/synap-market/author-and-publish.md +212 -0
- package/skills/synap-market/discover-and-fetch.md +59 -0
- package/skills/synap-market/governance-and-catalog.md +63 -0
- package/skills/synap-market/install.md +133 -0
- package/skills/synap-market/overview.md +119 -0
- package/skills/synap-schema/SKILL.md +172 -10
- package/skills/synap-schema/_order.txt +2 -0
- package/skills/synap-schema/_skill.yaml +4 -2
- package/skills/synap-schema/common-mistakes.md +4 -2
- package/skills/synap-schema/discover-profiles.md +1 -1
- package/skills/synap-schema/entity-scope.md +15 -3
- package/skills/synap-schema/extend-first.md +29 -0
- package/skills/synap-schema/extend-vs-create.md +1 -1
- package/skills/synap-schema/intent-vocabulary-ssot.md +111 -0
- package/skills/synap-schema/property-types.md +1 -1
- package/skills/synap-schema/relations.md +1 -1
- package/skills/synap-ui/SKILL.md +19 -12
- package/skills/synap-ui/_skill.yaml +1 -1
- package/skills/synap-ui/ai-companion.md +1 -1
- package/skills/synap-ui/arranging-bento.md +2 -0
- package/skills/synap-ui/bento-layouts.md +10 -10
- package/skills/synap-ui/bento-recipes.md +313 -543
- package/skills/synap-ui/four-builds.md +5 -0
- package/skills/synap-ui/view-types.md +2 -2
- package/skills/synap-ui/widget-catalog.md +22 -278
- package/templates/automations/bookmark-enrichment.automation.json +290 -13
- package/templates/automations/url-bookmark-capture.automation.json +73 -11
- package/templates/skills/authoring-playbooks/SKILL.md +6 -3
- package/templates/skills/authoring-playbooks/reference/stages-contract.md +15 -0
- package/templates/skills/authoring-playbooks/reference/worked-example.md +3 -0
- package/dist/commands/infra.d.ts +0 -21
- package/dist/commands/infra.js +0 -262
- package/dist/commands/infra.js.map +0 -1
- package/dist/lib/browser-auth.d.ts +0 -35
- package/dist/lib/browser-auth.js +0 -170
- package/dist/lib/browser-auth.js.map +0 -1
- package/dist/lib/openclaw.d.ts +0 -32
- package/dist/lib/openclaw.js +0 -164
- package/dist/lib/openclaw.js.map +0 -1
- package/dist/lib/seed.d.ts +0 -13
- package/dist/lib/seed.js +0 -135
- package/dist/lib/seed.js.map +0 -1
package/dist/commands/mcp.js
CHANGED
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `synap mcp` — the MCP front door.
|
|
2
|
+
* `synap mcp` — the MCP front door. Two lanes:
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* 1. Web AI (Cloud MCP / OAuth) — control plane `${cp}/mcp` (managed:
|
|
5
|
+
* https://api.synap.live/mcp). claude.ai's connector UI is OAuth-only; use
|
|
6
|
+
* `synap mcp connect-claude` to print the URL (no key mint, no file write).
|
|
7
|
+
* 2. IDE / file-configurable — pod `${podUrl}/mcp` (Bearer). Needs a pod +
|
|
8
|
+
* key. `synap mcp connect <client>` writes client config; `synap mcp url`
|
|
9
|
+
* prints URL + key for header-based UIs (ChatGPT, Raycast, …).
|
|
6
10
|
*
|
|
7
|
-
* synap mcp url
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* synap mcp
|
|
11
|
-
* synap mcp connect — alias of `synap connect` for file-configurable clients
|
|
12
|
-
* (Claude Code, Cursor, Desktop, …) — writes the config.
|
|
13
|
-
*
|
|
14
|
-
* For file-configurable clients, prefer `synap mcp connect <client>` (it mints a
|
|
15
|
-
* dedicated agent key + writes the client's config). `synap mcp url` is the
|
|
16
|
-
* escape hatch for clients you must configure by hand in a UI.
|
|
11
|
+
* synap mcp url — paste-ready pod MCP connection (URL + key)
|
|
12
|
+
* synap mcp verify — health-check pod /mcp + key
|
|
13
|
+
* synap mcp connect — write MCP config for IDE/desktop clients
|
|
14
|
+
* synap mcp connect-claude — print Cloud MCP OAuth URL for claude.ai (web)
|
|
17
15
|
*/
|
|
18
16
|
import chalk from "chalk";
|
|
19
17
|
import { resolveHubConfig } from "../lib/hub-client.js";
|
|
20
18
|
import { buildMcpUrl, provisionAgentKey, enrollAgentIfNeeded, } from "../lib/targets.js";
|
|
21
19
|
import { log } from "../utils/logger.js";
|
|
20
|
+
import { printMcpConnection, redactKey, writeMcpSnippetFiles, MCP_KEY_ENV } from "../lib/mcp-snippets.js";
|
|
22
21
|
/** Resolve the scoped MCP URL + the lenses from flags.
|
|
23
22
|
*
|
|
24
23
|
* Default is POD-WIDE: a workspace is a lens, not a container, so we do NOT
|
|
@@ -85,33 +84,7 @@ export async function mcpUrl(opts) {
|
|
|
85
84
|
}, null, 2));
|
|
86
85
|
return;
|
|
87
86
|
}
|
|
88
|
-
|
|
89
|
-
mcpServers: {
|
|
90
|
-
synap: { url, headers: { Authorization: `Bearer ${hubApiKey}` } },
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
const mcpRemote = {
|
|
94
|
-
mcpServers: {
|
|
95
|
-
synap: {
|
|
96
|
-
command: "npx",
|
|
97
|
-
args: ["mcp-remote", url, "--header", `Authorization: Bearer ${hubApiKey}`],
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
|
-
};
|
|
101
|
-
log.heading("\nSynap MCP connection");
|
|
102
|
-
console.log(` ${chalk.dim("URL")} ${url}`);
|
|
103
|
-
console.log(` ${chalk.dim("Header")} Authorization: Bearer ${hubApiKey}`);
|
|
104
|
-
console.log(` ${chalk.dim("Agent")} ${agentUserId}${workspaceId ? chalk.dim(` · workspace ${workspaceId}`) : chalk.dim(" · pod-wide")}${projectId ? chalk.dim(` · project ${projectId}`) : ""}`);
|
|
105
|
-
console.log(chalk.bold("\nClaude Code"));
|
|
106
|
-
console.log(chalk.cyan(` claude mcp add --transport http synap ${url} \\\n --header "Authorization: Bearer ${hubApiKey}" --scope user`));
|
|
107
|
-
console.log(chalk.bold("\nCursor / VS Code / native-HTTP clients (mcp.json)"));
|
|
108
|
-
console.log(chalk.dim(JSON.stringify(mcpServers, null, 2)));
|
|
109
|
-
console.log(chalk.bold("\nClaude Desktop / stdio-only clients (mcp-remote bridge)"));
|
|
110
|
-
console.log(chalk.dim(JSON.stringify(mcpRemote, null, 2)));
|
|
111
|
-
console.log(chalk.bold("\nUI clients (ChatGPT connectors, claude.ai, Raycast, …)"));
|
|
112
|
-
console.log(` Paste the URL above and add the Authorization header.`);
|
|
113
|
-
console.log(chalk.dim(" Raycast: run “Install MCP Server” → transport HTTP → paste the URL + a “Authorization: Bearer …” header."));
|
|
114
|
-
console.log(chalk.dim("\nTip: for file-configurable clients, `synap mcp connect <client>` writes the config for you."));
|
|
87
|
+
printMcpConnection({ url, hubApiKey, agentUserId, workspaceId, projectId });
|
|
115
88
|
}
|
|
116
89
|
catch (e) {
|
|
117
90
|
log.error(`Could not build MCP connection: ${e.message}`);
|
|
@@ -181,4 +154,299 @@ export async function mcpVerify(opts) {
|
|
|
181
154
|
process.exit(1);
|
|
182
155
|
}
|
|
183
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Derive the control-plane origin from a pod host, e.g.
|
|
159
|
+
* `pod.antoinesrvt.synap.live` → `https://api.synap.live`.
|
|
160
|
+
*
|
|
161
|
+
* Pods are provisioned at `pod.<owner>.<root-domain>`; the control plane lives
|
|
162
|
+
* at `api.<root-domain>` on the same root. Only strips when the host actually
|
|
163
|
+
* starts with `pod.` — anything else (localhost, a custom domain, …) can't be
|
|
164
|
+
* derived confidently, so the caller falls back to a placeholder + `--cp-url`.
|
|
165
|
+
*/
|
|
166
|
+
export function deriveCpOrigin(podUrl) {
|
|
167
|
+
try {
|
|
168
|
+
const host = new URL(podUrl).hostname;
|
|
169
|
+
const labels = host.split(".");
|
|
170
|
+
if (labels[0] === "pod" && labels.length >= 3) {
|
|
171
|
+
const rest = labels.slice(1); // drop "pod"
|
|
172
|
+
// rest = [<owner>, ...root] when there's an owner segment, or just
|
|
173
|
+
// [...root] when the pod is hosted directly under the root domain.
|
|
174
|
+
const root = rest.length > 2 ? rest.slice(1).join(".") : rest.join(".");
|
|
175
|
+
return { cpOrigin: `https://api.${root}`, derived: true };
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
// fall through to placeholder
|
|
180
|
+
}
|
|
181
|
+
return { cpOrigin: "https://api.<your-domain>", derived: false };
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* `synap mcp connect-claude` — print the claude.ai (web) OAuth connection.
|
|
185
|
+
*
|
|
186
|
+
* claude.ai's "Add custom connector" UI is OAuth-only (Dynamic Client
|
|
187
|
+
* Registration) — it has no field for a bearer header, so the file/header
|
|
188
|
+
* based flows (`mcp connect`, `mcp url`) don't apply. The control plane's
|
|
189
|
+
* `/mcp` endpoint speaks OAuth: paste a URL, approve in the browser. This
|
|
190
|
+
* command does not mint keys or write client config — it only prints the URL.
|
|
191
|
+
*
|
|
192
|
+
* Stranger-safe: if no pod is configured, falls back to `--cp-url` or the
|
|
193
|
+
* managed control plane `https://api.synap.live`.
|
|
194
|
+
*/
|
|
195
|
+
export async function mcpConnectClaudeWeb(opts) {
|
|
196
|
+
try {
|
|
197
|
+
const MANAGED_CP = "https://api.synap.live";
|
|
198
|
+
/** How we chose the CP origin — for --json + user-facing notes. */
|
|
199
|
+
let source = "managed-fallback";
|
|
200
|
+
let cpOrigin = MANAGED_CP;
|
|
201
|
+
if (opts.cpUrl) {
|
|
202
|
+
cpOrigin = opts.cpUrl.replace(/\/$/, "");
|
|
203
|
+
source = "override";
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
try {
|
|
207
|
+
const cfg = await resolveHubConfig(opts);
|
|
208
|
+
const fromPod = deriveCpOrigin(cfg.podUrl);
|
|
209
|
+
if (fromPod.derived) {
|
|
210
|
+
cpOrigin = fromPod.cpOrigin;
|
|
211
|
+
source = "derived";
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
// Non-pod.* host — can't derive confidently; managed + tip to --cp-url.
|
|
215
|
+
cpOrigin = MANAGED_CP;
|
|
216
|
+
source = "managed-fallback";
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
// No pod config — stranger path: print managed Cloud MCP (no key mint).
|
|
221
|
+
cpOrigin = MANAGED_CP;
|
|
222
|
+
source = "managed-fallback";
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const finalCpOrigin = cpOrigin.replace(/\/$/, "");
|
|
226
|
+
const url = `${finalCpOrigin}/mcp`;
|
|
227
|
+
const steps = [
|
|
228
|
+
"Open claude.ai → Settings → Connectors → Add custom connector",
|
|
229
|
+
"Name: Synap",
|
|
230
|
+
`URL: ${url}`,
|
|
231
|
+
"Leave Advanced settings (OAuth Client ID/Secret) blank",
|
|
232
|
+
"Click Add → you'll be redirected to sign in to Synap Cloud and approve → done",
|
|
233
|
+
'Then ask Claude to "list my Synap pods" (list_pods) and connect one (connect_pod)',
|
|
234
|
+
];
|
|
235
|
+
if (opts.json) {
|
|
236
|
+
console.log(JSON.stringify({ url, cpOrigin: finalCpOrigin, derived: source, steps }, null, 2));
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
log.heading("\nConnect claude.ai (web) to Synap");
|
|
240
|
+
if (source === "managed-fallback" && !opts.cpUrl) {
|
|
241
|
+
console.log(chalk.dim(" Using managed Cloud MCP (https://api.synap.live). Pass --cp-url for a self-hosted control plane. No key minted."));
|
|
242
|
+
}
|
|
243
|
+
console.log(` ${chalk.dim("URL")} ${url}`);
|
|
244
|
+
console.log();
|
|
245
|
+
steps.forEach((step, i) => console.log(` ${chalk.bold(`${i + 1}.`)} ${step}`));
|
|
246
|
+
console.log();
|
|
247
|
+
console.log(chalk.dim("Cloud MCP does not store your data. After OAuth, list_pods then connect_pod (you still need a pod for useful work)."));
|
|
248
|
+
}
|
|
249
|
+
catch (e) {
|
|
250
|
+
log.error(`Could not build the claude.ai connection: ${e.message}`);
|
|
251
|
+
process.exit(1);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* `synap mcp ui-setup <client>` — print the exact form fields to fill in a
|
|
256
|
+
* client's MCP/Connector UI. Supports ChatGPT (API key), Codex, Cursor,
|
|
257
|
+
* VS Code, Claude Desktop, and generic clients.
|
|
258
|
+
*/
|
|
259
|
+
export async function mcpUiSetup(client, opts) {
|
|
260
|
+
try {
|
|
261
|
+
const hubCfg = await resolveHubConfig({ podUrl: opts.podUrl, apiKey: opts.apiKey });
|
|
262
|
+
const { url, workspaceId, projectId } = resolveMcpTarget(hubCfg, { workspace: opts.workspace, project: opts.project });
|
|
263
|
+
const { hubApiKey, agentUserId } = await provisionAgentKey(hubCfg.podUrl, hubCfg.apiKey, "generic", { requireApproval: false });
|
|
264
|
+
const normalizedClient = client.toLowerCase().replace(/-/g, "");
|
|
265
|
+
let output = "";
|
|
266
|
+
// The key never reaches stdout or argv: fields show it redacted; the full
|
|
267
|
+
// material is written 0600 and clients reference it through an env var.
|
|
268
|
+
const keyShown = redactKey(hubApiKey);
|
|
269
|
+
const snippetFiles = writeMcpSnippetFiles(url, hubApiKey, agentUserId);
|
|
270
|
+
const clientConfigs = {
|
|
271
|
+
chatgpt: {
|
|
272
|
+
name: "ChatGPT (API key)",
|
|
273
|
+
format: "http",
|
|
274
|
+
fields: {
|
|
275
|
+
"Connector Name": "Synap",
|
|
276
|
+
"URL": url,
|
|
277
|
+
"Auth Type": "API Key",
|
|
278
|
+
"API Key": `${keyShown} (full key: ${snippetFiles.envFile})`,
|
|
279
|
+
},
|
|
280
|
+
notes: [
|
|
281
|
+
"ChatGPT → Settings → Connectors → Add custom connector",
|
|
282
|
+
"Paste the URL and API Key exactly as shown above",
|
|
283
|
+
`If your build shows a Header field instead: Authorization: Bearer <key> (full key in ${snippetFiles.envFile}, 0600)`,
|
|
284
|
+
],
|
|
285
|
+
},
|
|
286
|
+
chatgptoauth: {
|
|
287
|
+
name: "ChatGPT (OAuth via Control Plane)",
|
|
288
|
+
format: "http",
|
|
289
|
+
fields: {
|
|
290
|
+
"Connector Name": "Synap (Control Plane)",
|
|
291
|
+
"URL": "https://api.synap.live/mcp",
|
|
292
|
+
"Auth Type": "OAuth",
|
|
293
|
+
"API Key": "(leave blank — OAuth flow)",
|
|
294
|
+
},
|
|
295
|
+
notes: [
|
|
296
|
+
"ChatGPT → Settings → Connectors → Add custom connector",
|
|
297
|
+
"Use the Control Plane OAuth URL (multi-pod support)",
|
|
298
|
+
"After connecting, ask ChatGPT: 'list my Synap pods' then 'connect pod <name>'",
|
|
299
|
+
],
|
|
300
|
+
},
|
|
301
|
+
codex: {
|
|
302
|
+
name: "OpenAI Codex (config.toml)",
|
|
303
|
+
format: "file",
|
|
304
|
+
fields: {
|
|
305
|
+
"Config file": "~/.codex/config.toml",
|
|
306
|
+
"Section to add": `[mcp_servers.synap]`,
|
|
307
|
+
"url": url,
|
|
308
|
+
"http_headers": `{ Authorization = "Bearer ${keyShown}" }`,
|
|
309
|
+
"startup_timeout_sec": "30",
|
|
310
|
+
"enabled": "true",
|
|
311
|
+
},
|
|
312
|
+
notes: [
|
|
313
|
+
`Open ~/.codex/config.toml and add the [mcp_servers.synap] section (replace ${keyShown} with the full key from ${snippetFiles.envFile}, 0600)`,
|
|
314
|
+
"Restart Codex CLI to pick up the new MCP server",
|
|
315
|
+
"The synap tool set will appear in agent mode",
|
|
316
|
+
],
|
|
317
|
+
},
|
|
318
|
+
cursor: {
|
|
319
|
+
name: "Cursor (mcp.json)",
|
|
320
|
+
format: "http",
|
|
321
|
+
fields: {
|
|
322
|
+
"Config file": "~/.cursor/mcp.json",
|
|
323
|
+
"mcpServers.synap.url": url,
|
|
324
|
+
"mcpServers.synap.headers.Authorization": `Bearer \${env:${MCP_KEY_ENV}}`,
|
|
325
|
+
},
|
|
326
|
+
notes: [
|
|
327
|
+
"Cursor reads native HTTP MCP format from ~/.cursor/mcp.json",
|
|
328
|
+
"Restart Cursor. The synap tool set will appear in agent mode.",
|
|
329
|
+
],
|
|
330
|
+
},
|
|
331
|
+
vscode: {
|
|
332
|
+
name: "VS Code (Kilo Code / Cline / Continue / Copilot)",
|
|
333
|
+
format: "http",
|
|
334
|
+
fields: {
|
|
335
|
+
"Config file": "~/Library/Application Support/Code/User/mcp.json (macOS)",
|
|
336
|
+
"servers.synap.type": "http",
|
|
337
|
+
"servers.synap.url": url,
|
|
338
|
+
"servers.synap.headers.Authorization": `Bearer \${env:${MCP_KEY_ENV}}`,
|
|
339
|
+
},
|
|
340
|
+
notes: [
|
|
341
|
+
"VS Code 1.99+ uses 'servers' format (not mcpServers)",
|
|
342
|
+
"Picked up automatically by Kilo Code, Cline, Continue, and GitHub Copilot",
|
|
343
|
+
"Reload VS Code (or open the MCP panel) to activate",
|
|
344
|
+
],
|
|
345
|
+
},
|
|
346
|
+
"claude-desktop": {
|
|
347
|
+
name: "Claude Desktop (stdio bridge)",
|
|
348
|
+
format: "stdio",
|
|
349
|
+
fields: {
|
|
350
|
+
"Config file": "~/Library/Application Support/Claude/claude_desktop_config.json (macOS)",
|
|
351
|
+
"mcpServers.synap.command": "npx",
|
|
352
|
+
"mcpServers.synap.args": `-y mcp-remote ${url} --header "Authorization:\${SYNAP_AUTH}"`,
|
|
353
|
+
"mcpServers.synap.env.SYNAP_AUTH": `Bearer ${keyShown} (real value: "mcpRemote" block in ${snippetFiles.jsonFile})`,
|
|
354
|
+
},
|
|
355
|
+
notes: [
|
|
356
|
+
"Claude Desktop only supports stdio MCP — uses mcp-remote bridge",
|
|
357
|
+
"Fully quit Claude Desktop (Cmd+Q), then relaunch",
|
|
358
|
+
"Look for the MCP tools icon under the input box — 'synap' should appear",
|
|
359
|
+
],
|
|
360
|
+
},
|
|
361
|
+
"claude-code": {
|
|
362
|
+
name: "Claude Code (native HTTP MCP)",
|
|
363
|
+
format: "http",
|
|
364
|
+
fields: {
|
|
365
|
+
"Command": `source ${snippetFiles.envFile} && claude mcp add --transport http synap-${new URL(hubCfg.podUrl).hostname.split(".")[1] || "pod"} ${url} --header 'Authorization: Bearer \${${MCP_KEY_ENV}}' --scope user`,
|
|
366
|
+
},
|
|
367
|
+
notes: [
|
|
368
|
+
`The key stays out of the command: it is read from $${MCP_KEY_ENV} when Claude Code starts — launch it from a shell that sourced ${snippetFiles.envFile}`,
|
|
369
|
+
"Relaunch Claude Code to load the tools",
|
|
370
|
+
],
|
|
371
|
+
},
|
|
372
|
+
generic: {
|
|
373
|
+
name: "Generic MCP Client (HTTP)",
|
|
374
|
+
format: "http",
|
|
375
|
+
fields: {
|
|
376
|
+
"URL": url,
|
|
377
|
+
"Headers": `Authorization: Bearer ${keyShown}`,
|
|
378
|
+
},
|
|
379
|
+
notes: [
|
|
380
|
+
"Paste URL and add Authorization header in your client's MCP config",
|
|
381
|
+
"Supports any MCP-compatible client with HTTP transport",
|
|
382
|
+
],
|
|
383
|
+
},
|
|
384
|
+
};
|
|
385
|
+
const clientConfig = clientConfigs[normalizedClient] || clientConfigs.generic;
|
|
386
|
+
if (opts.json) {
|
|
387
|
+
console.log(JSON.stringify({ client: clientConfig.name, format: clientConfig.format, fields: clientConfig.fields, notes: clientConfig.notes }, null, 2));
|
|
388
|
+
return;
|
|
389
|
+
}
|
|
390
|
+
log.heading(`MCP UI Setup — ${clientConfig.name}`);
|
|
391
|
+
log.blank();
|
|
392
|
+
log.info("Form fields to fill in your client's MCP/Connector settings:");
|
|
393
|
+
log.blank();
|
|
394
|
+
for (const [key, value] of Object.entries(clientConfig.fields)) {
|
|
395
|
+
console.log(` ${chalk.bold(key)}: ${chalk.cyan(value)}`);
|
|
396
|
+
}
|
|
397
|
+
log.blank();
|
|
398
|
+
log.info("Notes:");
|
|
399
|
+
for (const note of clientConfig.notes) {
|
|
400
|
+
console.log(` • ${note}`);
|
|
401
|
+
}
|
|
402
|
+
log.blank();
|
|
403
|
+
log.dim("Agent key provisioned for this session. Re-run with --name to target another pod.");
|
|
404
|
+
}
|
|
405
|
+
catch (e) {
|
|
406
|
+
log.error(`Could not build UI setup: ${e.message}`);
|
|
407
|
+
process.exit(1);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* `synap mcp bridge` — the stdio MCP server Claude Code spawns when it is
|
|
412
|
+
* connected through the bridge (`synap mcp use-bridge`). Forwards every
|
|
413
|
+
* message to the pod's /mcp and names the Claude Code conversation it runs in,
|
|
414
|
+
* so the work it does can be reopened there. See lib/mcp-bridge.ts.
|
|
415
|
+
*
|
|
416
|
+
* stdout IS the protocol — nothing but JSON-RPC may be written to it.
|
|
417
|
+
*/
|
|
418
|
+
export async function mcpBridge(opts) {
|
|
419
|
+
const { runMcpBridge } = await import("../lib/mcp-bridge.js");
|
|
420
|
+
const { conversationHeaders } = await import("../lib/conversation-headers.js");
|
|
421
|
+
const fromEnv = process.env.SYNAP_MCP_API_KEY || process.env.SYNAP_HUB_API_KEY;
|
|
422
|
+
const cfg = fromEnv && opts.url ? null : await resolveHubConfig();
|
|
423
|
+
const apiKey = fromEnv || cfg?.apiKey;
|
|
424
|
+
const url = opts.url || (cfg ? buildMcpUrl(cfg.podUrl) : undefined);
|
|
425
|
+
if (!apiKey || !url) {
|
|
426
|
+
process.stderr.write("[synap mcp bridge] no pod key or URL — run `synap init`\n");
|
|
427
|
+
process.exit(1);
|
|
428
|
+
}
|
|
429
|
+
// The spawn-time id (a stdio server's env), never a lens fallback.
|
|
430
|
+
await runMcpBridge({
|
|
431
|
+
url,
|
|
432
|
+
apiKey,
|
|
433
|
+
headers: conversationHeaders(process.env.CLAUDE_CODE_SESSION_ID),
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* `synap mcp use-bridge [--off]` — switch Claude Code's MCP connection to the
|
|
438
|
+
* stdio bridge (or back to direct http), re-using the key `synap init` stored.
|
|
439
|
+
*/
|
|
440
|
+
export async function mcpUseBridge(opts) {
|
|
441
|
+
const { setClaudeCodeMcpTransport } = await import("../lib/targets.js");
|
|
442
|
+
const name = setClaudeCodeMcpTransport(opts.off ? "http" : "bridge");
|
|
443
|
+
if (!name) {
|
|
444
|
+
log.error("Claude Code is not connected to a pod yet — run `synap init` first.");
|
|
445
|
+
process.exitCode = 1;
|
|
446
|
+
return;
|
|
447
|
+
}
|
|
448
|
+
log.dim(opts.off
|
|
449
|
+
? "Claude Code talks to the pod directly again; conversations are no longer named on MCP calls."
|
|
450
|
+
: "Each Claude Code conversation is now named on its MCP calls, so its work can be reopened with `claude --resume <id>`.");
|
|
451
|
+
}
|
|
184
452
|
//# sourceMappingURL=mcp.js.map
|
package/dist/commands/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/open.d.ts
CHANGED
|
@@ -6,27 +6,57 @@
|
|
|
6
6
|
* synap open document <id>
|
|
7
7
|
* synap open <id> ← resolves type automatically
|
|
8
8
|
*
|
|
9
|
-
* Sends a synap:// deep link to the Electron browser app
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
* Sends a synap:// deep link to the Electron browser app. The OS routes the
|
|
10
|
+
* URL to the registered handler. On macOS we target the installed Synap.app
|
|
11
|
+
* by bundle id / path so leftover electron-vite (`com.github.electron`)
|
|
12
|
+
* cannot steal the click.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Object kind, as a free string. The browser's `object-nav.ts` is the ONE
|
|
16
|
+
* route table for what's openable (21 kinds and growing) — the CLI does not
|
|
17
|
+
* duplicate it. An unroutable kind still opens the app; `objectNavTarget`
|
|
18
|
+
* decides there and returns `null` silently, so this command always prints
|
|
19
|
+
* the emitted link so the user can see what was sent.
|
|
15
20
|
*/
|
|
16
|
-
export type OpenKind =
|
|
21
|
+
export type OpenKind = string;
|
|
17
22
|
export interface OpenOpts {
|
|
18
23
|
kind: OpenKind;
|
|
19
24
|
id: string;
|
|
25
|
+
/** Address parameters the kind needs to be resolvable (a run's flowType). */
|
|
26
|
+
params?: Record<string, string>;
|
|
20
27
|
}
|
|
21
28
|
export interface ResolveResult {
|
|
22
|
-
|
|
29
|
+
/**
|
|
30
|
+
* A browser-routable label, or "unknown". FREE STRING on purpose: the pod's
|
|
31
|
+
* `/resolve/:id` projects onto `object-nav.ts`'s route table (~21 kinds) and
|
|
32
|
+
* pins that with a tripwire. A hand-written union here was a second, smaller
|
|
33
|
+
* table — it listed four kinds, so every capability-substrate object the pod
|
|
34
|
+
* could resolve was still unopenable on this side.
|
|
35
|
+
*/
|
|
36
|
+
type: string;
|
|
37
|
+
/** The id to OPEN — not always the id queried (a correlationId resolves to
|
|
38
|
+
* the proposal/skill row it belongs to, and THAT is what opens). */
|
|
23
39
|
id: string;
|
|
24
40
|
displayName: string | null;
|
|
25
41
|
workspaceId: string | null;
|
|
26
42
|
profileSlug?: string | null;
|
|
43
|
+
/** False when the thing resolved but has no browser surface at all. */
|
|
44
|
+
openable?: boolean;
|
|
45
|
+
/** Address params the deep link must carry (only runs use one today). */
|
|
46
|
+
params?: Record<string, string>;
|
|
27
47
|
}
|
|
48
|
+
/** Lock-step with browser/electron-builder.yml `appId`. */
|
|
49
|
+
export declare const DESKTOP_BUNDLE_ID = "live.synap.browser";
|
|
50
|
+
export declare function desktopAppPaths(home?: string): string[];
|
|
51
|
+
export declare function buildDeepLink(kind: OpenKind, id: string, params?: Record<string, string>): string;
|
|
52
|
+
/**
|
|
53
|
+
* Ordered `open` argv lists for macOS. Prefer the installed .app so we do
|
|
54
|
+
* not depend on Launch Services still pointing at electron-vite.
|
|
55
|
+
*/
|
|
56
|
+
export declare function darwinOpenArgvCandidates(url: string, exists?: (path: string) => boolean): string[][];
|
|
57
|
+
export declare function openUrl(url: string): void;
|
|
28
58
|
export declare function openInBrowser(opts: OpenOpts): Promise<void>;
|
|
29
59
|
/**
|
|
30
|
-
* Resolve a bare ID then open in
|
|
60
|
+
* Resolve a bare ID then open in the desktop app.
|
|
31
61
|
*/
|
|
32
62
|
export declare function resolveAndOpen(id: string): Promise<void>;
|
package/dist/commands/open.js
CHANGED
|
@@ -6,33 +6,67 @@
|
|
|
6
6
|
* synap open document <id>
|
|
7
7
|
* synap open <id> ← resolves type automatically
|
|
8
8
|
*
|
|
9
|
-
* Sends a synap:// deep link to the Electron browser app
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* Works from any terminal — the OS routes the URL to the registered synap://
|
|
14
|
-
* protocol handler. Requires the Synap desktop app to be running.
|
|
9
|
+
* Sends a synap:// deep link to the Electron browser app. The OS routes the
|
|
10
|
+
* URL to the registered handler. On macOS we target the installed Synap.app
|
|
11
|
+
* by bundle id / path so leftover electron-vite (`com.github.electron`)
|
|
12
|
+
* cannot steal the click.
|
|
15
13
|
*/
|
|
16
|
-
import {
|
|
14
|
+
import { execFileSync } from "child_process";
|
|
15
|
+
import { existsSync } from "fs";
|
|
16
|
+
import { homedir } from "os";
|
|
17
|
+
import { join } from "path";
|
|
18
|
+
import { openAppUrl } from "@synap-core/hub-rest-client";
|
|
17
19
|
import { resolveHubConfig } from "../lib/hub-client.js";
|
|
18
20
|
import { log } from "../utils/logger.js";
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
/** Lock-step with browser/electron-builder.yml `appId`. */
|
|
22
|
+
export const DESKTOP_BUNDLE_ID = "live.synap.browser";
|
|
23
|
+
export function desktopAppPaths(home = homedir()) {
|
|
24
|
+
return [
|
|
25
|
+
"/Applications/Synap.app",
|
|
26
|
+
join(home, "Applications", "Synap.app"),
|
|
27
|
+
];
|
|
28
|
+
}
|
|
29
|
+
export function buildDeepLink(kind, id, params) {
|
|
30
|
+
return openAppUrl(kind, id, params);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Ordered `open` argv lists for macOS. Prefer the installed .app so we do
|
|
34
|
+
* not depend on Launch Services still pointing at electron-vite.
|
|
35
|
+
*/
|
|
36
|
+
export function darwinOpenArgvCandidates(url, exists = existsSync) {
|
|
37
|
+
const candidates = [];
|
|
38
|
+
const installed = desktopAppPaths().find(exists);
|
|
39
|
+
if (installed)
|
|
40
|
+
candidates.push(["-a", installed, url]);
|
|
41
|
+
candidates.push(["-b", DESKTOP_BUNDLE_ID, url]);
|
|
42
|
+
candidates.push([url]);
|
|
43
|
+
return candidates;
|
|
21
44
|
}
|
|
22
|
-
function openUrl(url) {
|
|
45
|
+
export function openUrl(url) {
|
|
23
46
|
const platform = process.platform;
|
|
24
47
|
if (platform === "darwin") {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
48
|
+
let lastErr;
|
|
49
|
+
for (const args of darwinOpenArgvCandidates(url)) {
|
|
50
|
+
try {
|
|
51
|
+
execFileSync("open", args, { stdio: "pipe" });
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
lastErr = e;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
throw lastErr instanceof Error ? lastErr : new Error("open failed");
|
|
29
59
|
}
|
|
30
|
-
|
|
31
|
-
|
|
60
|
+
if (platform === "linux") {
|
|
61
|
+
execFileSync("xdg-open", [url], { stdio: "pipe" });
|
|
62
|
+
return;
|
|
32
63
|
}
|
|
33
|
-
|
|
34
|
-
|
|
64
|
+
if (platform === "win32") {
|
|
65
|
+
// argv only: `start "" "<url>"` went through cmd.exe, where `&` in a link runs a command.
|
|
66
|
+
execFileSync("rundll32", ["url.dll,FileProtocolHandler", url], { stdio: "pipe" });
|
|
67
|
+
return;
|
|
35
68
|
}
|
|
69
|
+
throw new Error(`Unsupported platform: ${platform}`);
|
|
36
70
|
}
|
|
37
71
|
/**
|
|
38
72
|
* Resolve a bare ID by calling the pod's /resolve endpoint.
|
|
@@ -51,22 +85,26 @@ async function resolveId(id) {
|
|
|
51
85
|
return res.json();
|
|
52
86
|
}
|
|
53
87
|
export async function openInBrowser(opts) {
|
|
54
|
-
const url = buildDeepLink(opts.kind, opts.id);
|
|
88
|
+
const url = buildDeepLink(opts.kind, opts.id, opts.params);
|
|
55
89
|
try {
|
|
56
90
|
openUrl(url);
|
|
57
|
-
log.success(`Opened ${opts.kind} in
|
|
91
|
+
log.success(`Opened ${opts.kind} in the Synap app: ${opts.id.slice(0, 8)}…`);
|
|
58
92
|
log.dim(` (${url})`);
|
|
59
93
|
}
|
|
60
94
|
catch (e) {
|
|
61
|
-
log.error(`Could not open
|
|
62
|
-
`
|
|
95
|
+
log.error(`Could not open the Synap desktop app: ${e.message}\n` +
|
|
96
|
+
` Install Synap.app (or run the desktop app once) so it can claim synap://.`);
|
|
63
97
|
process.exit(1);
|
|
64
98
|
}
|
|
65
99
|
}
|
|
66
100
|
/**
|
|
67
|
-
* Resolve a bare ID then open in
|
|
101
|
+
* Resolve a bare ID then open in the desktop app.
|
|
68
102
|
*/
|
|
69
103
|
export async function resolveAndOpen(id) {
|
|
104
|
+
if (id.startsWith("generated:")) {
|
|
105
|
+
await openInBrowser({ kind: "cell", id });
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
70
108
|
try {
|
|
71
109
|
const resolved = await resolveId(id);
|
|
72
110
|
if (resolved.type === "unknown") {
|
|
@@ -74,11 +112,28 @@ export async function resolveAndOpen(id) {
|
|
|
74
112
|
return;
|
|
75
113
|
}
|
|
76
114
|
log.info(`Resolved: ${resolved.type} — ${resolved.displayName ?? id.slice(0, 8)}`);
|
|
77
|
-
|
|
115
|
+
// RESOLVED BUT NOT OPENABLE. Some things the pod can identify have no
|
|
116
|
+
// browser surface at all (an external send is a correlationId-keyed audit
|
|
117
|
+
// event: no row, no page). Say what it is and stop — minting
|
|
118
|
+
// `synap://open/<kind>/<id>` for a kind the route table has no arm for
|
|
119
|
+
// opens the app onto nothing, which is worse than an honest refusal.
|
|
120
|
+
if (resolved.openable === false) {
|
|
121
|
+
log.warn(`A ${resolved.type} has no page in the Synap app — nothing to open.\n` +
|
|
122
|
+
` Inspect it instead: synap diagnose ${id}`);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
// `resolved.id`, not `id`: a correlationId handed back by a capability run
|
|
126
|
+
// resolves to the proposal (or skill) row it belongs to, and that ROW id is
|
|
127
|
+
// what the deep link must carry. For every direct row-id hit they are equal.
|
|
128
|
+
await openInBrowser({
|
|
129
|
+
kind: resolved.type,
|
|
130
|
+
id: resolved.id ?? id,
|
|
131
|
+
...(resolved.params ? { params: resolved.params } : {}),
|
|
132
|
+
});
|
|
78
133
|
}
|
|
79
134
|
catch (e) {
|
|
80
135
|
log.error(`Could not resolve/open: ${e.message}\n` +
|
|
81
|
-
` Make sure the Synap desktop app is
|
|
136
|
+
` Make sure the Synap desktop app is installed and your pod is reachable.`);
|
|
82
137
|
process.exit(1);
|
|
83
138
|
}
|
|
84
139
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"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"}
|