@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
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ONE door for bringing an agent into a pod.
|
|
3
|
+
*
|
|
4
|
+
* `synap agents add`, `synap connect`, `synap init` and the deprecated
|
|
5
|
+
* `synap agents create` all land here, so there is one answer to every
|
|
6
|
+
* question they used to answer differently:
|
|
7
|
+
*
|
|
8
|
+
* - Scope: POD-WIDE by default. `--workspace` / `--project` narrow it, and
|
|
9
|
+
* they compose. (`agents create` used to force a workspace — that broke the
|
|
10
|
+
* 2026-08-04 decision that a workspace is a lens, not a container.)
|
|
11
|
+
* - Approval: every new agent key goes through the pod's approval page.
|
|
12
|
+
* (`agents create` used to mint with `requireApproval: false`.)
|
|
13
|
+
* - Proof: every path ends with a check against the pod's `/mcp` using the
|
|
14
|
+
* AGENT key — the key the client will actually hold — and a known client
|
|
15
|
+
* reads "connected" only after the pod confirms the key now in its config
|
|
16
|
+
* (`confirmSurfaceKey`, the reader `synap doctor` uses).
|
|
17
|
+
*
|
|
18
|
+
* Three ways in, picked by `planAgentAdd`:
|
|
19
|
+
* known — a client we can wire (claude-code, cursor, codex, …): mint, write
|
|
20
|
+
* its config, verify. Same installer as before (`installForTarget`).
|
|
21
|
+
* custom — anything else: mint, verify, then ONE card with the URL + key
|
|
22
|
+
* (snippets on demand: `synap agents info <name> --snippets`).
|
|
23
|
+
* detect — nothing named: find the agents on this machine, pick, plus a
|
|
24
|
+
* "something else" row that falls through to custom.
|
|
25
|
+
* And one way to bring a key you already hold (`--api-key`), which only
|
|
26
|
+
* registers it locally — handled by the caller, never here.
|
|
27
|
+
*/
|
|
28
|
+
import { type TargetName } from "./targets.js";
|
|
29
|
+
export type AgentTemplate = "twin" | "assistant" | "custom";
|
|
30
|
+
export type AgentRole = "admin" | "editor" | "viewer";
|
|
31
|
+
export declare const AGENT_TEMPLATES: readonly AgentTemplate[];
|
|
32
|
+
export declare const AGENT_ROLES: readonly AgentRole[];
|
|
33
|
+
/** Where the agent looks. Both unset = pod-wide. */
|
|
34
|
+
export interface AgentScope {
|
|
35
|
+
workspaceId?: string;
|
|
36
|
+
projectId?: string;
|
|
37
|
+
}
|
|
38
|
+
export type AgentAddPlan = {
|
|
39
|
+
mode: "existing-key";
|
|
40
|
+
} | {
|
|
41
|
+
mode: "known";
|
|
42
|
+
target: TargetName;
|
|
43
|
+
} | {
|
|
44
|
+
mode: "custom";
|
|
45
|
+
name?: string;
|
|
46
|
+
} | {
|
|
47
|
+
mode: "detect";
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Decide which way in from what the user typed. `kind` is the positional
|
|
51
|
+
* (`synap agents add <kind>`).
|
|
52
|
+
*
|
|
53
|
+
* --api-key → existing-key (wins: the user already holds a key)
|
|
54
|
+
* <kind> = a client → known
|
|
55
|
+
* <kind> = "custom" → custom, name from --name (or prompted)
|
|
56
|
+
* <kind> = other word → custom, named after it
|
|
57
|
+
* --name / --template → custom
|
|
58
|
+
* nothing → detect
|
|
59
|
+
*/
|
|
60
|
+
export declare function planAgentAdd(kind: string | undefined, opts: {
|
|
61
|
+
apiKey?: string;
|
|
62
|
+
name?: string;
|
|
63
|
+
template?: string;
|
|
64
|
+
}): AgentAddPlan;
|
|
65
|
+
/**
|
|
66
|
+
* The agent type a custom agent is minted under. The pod keeps ONE agent per
|
|
67
|
+
* (human, agentType), so two differently-named agents need two types: the
|
|
68
|
+
* slug of the name, unless `--type` was given. A twin is always `twin`.
|
|
69
|
+
*/
|
|
70
|
+
export declare function customAgentType(name: string, template: AgentTemplate, explicitType?: string): {
|
|
71
|
+
agentType: string;
|
|
72
|
+
localName: string;
|
|
73
|
+
};
|
|
74
|
+
export interface AgentPod {
|
|
75
|
+
podUrl: string;
|
|
76
|
+
/** The HUMAN key that mints agent keys. Never written into a client config. */
|
|
77
|
+
apiKey: string;
|
|
78
|
+
podName?: string;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Which pod the agent joins. In order: explicit --pod-url + --api-key, the
|
|
82
|
+
* global `--pod <name>` override, `profileName` (connect's `--name`), the only
|
|
83
|
+
* profile, a pick. With no profile at all, offers to add one inline.
|
|
84
|
+
*/
|
|
85
|
+
export declare function resolveAgentPod(opts: {
|
|
86
|
+
podUrl?: string;
|
|
87
|
+
apiKey?: string;
|
|
88
|
+
profileName?: string;
|
|
89
|
+
}): Promise<AgentPod | null>;
|
|
90
|
+
/** Mint → write the client's config → verify. Returns whether it connected. */
|
|
91
|
+
export declare function connectKnownAgent(target: TargetName, pod: AgentPod, scope: AgentScope, opts?: {
|
|
92
|
+
withMcp?: boolean;
|
|
93
|
+
}): Promise<boolean>;
|
|
94
|
+
export interface CustomAgentRequest {
|
|
95
|
+
name?: string;
|
|
96
|
+
template?: string;
|
|
97
|
+
/** Explicit agent type (rare). Default: a slug of the name. */
|
|
98
|
+
type?: string;
|
|
99
|
+
role?: string;
|
|
100
|
+
label?: string;
|
|
101
|
+
}
|
|
102
|
+
/** Mint → verify → remember locally → print the URL + key card last. */
|
|
103
|
+
export declare function createCustomAgent(pod: AgentPod, req: CustomAgentRequest, scope: AgentScope): Promise<boolean>;
|
|
104
|
+
/**
|
|
105
|
+
* What a custom agent needs to be used: the URL, the key, where it looks, and
|
|
106
|
+
* whether it works — nothing else. `synap agents info <name> --show-key`
|
|
107
|
+
* prints the same card from the local cache, so the key is never lost to
|
|
108
|
+
* scrollback.
|
|
109
|
+
*/
|
|
110
|
+
export declare function printAgentCard(c: {
|
|
111
|
+
name: string;
|
|
112
|
+
localName: string;
|
|
113
|
+
url: string;
|
|
114
|
+
hubApiKey: string;
|
|
115
|
+
scope: AgentScope;
|
|
116
|
+
verified?: {
|
|
117
|
+
toolCount: number;
|
|
118
|
+
} | {
|
|
119
|
+
error: string;
|
|
120
|
+
};
|
|
121
|
+
}): void;
|
|
122
|
+
/**
|
|
123
|
+
* Bare `synap agents add`: the agents found on this machine, preselected, plus
|
|
124
|
+
* a "something else" row. Known picks connect together (one approval page);
|
|
125
|
+
* "something else" then runs the custom path.
|
|
126
|
+
*/
|
|
127
|
+
export declare function addDetectedAgents(pod: AgentPod, scope: AgentScope): Promise<boolean>;
|
|
128
|
+
/**
|
|
129
|
+
* Several known clients at once: every key approved on ONE page first, then
|
|
130
|
+
* each installed, one line per client. `synap init` connects through here too.
|
|
131
|
+
*/
|
|
132
|
+
export declare function connectAgentsBatch<T extends TargetName>(pod: AgentPod, targets: readonly T[], scope: AgentScope, opts?: {
|
|
133
|
+
labelOf?: (target: T) => string;
|
|
134
|
+
}): Promise<{
|
|
135
|
+
connected: T[];
|
|
136
|
+
notApproved: T[];
|
|
137
|
+
failed: T[];
|
|
138
|
+
}>;
|
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ONE door for bringing an agent into a pod.
|
|
3
|
+
*
|
|
4
|
+
* `synap agents add`, `synap connect`, `synap init` and the deprecated
|
|
5
|
+
* `synap agents create` all land here, so there is one answer to every
|
|
6
|
+
* question they used to answer differently:
|
|
7
|
+
*
|
|
8
|
+
* - Scope: POD-WIDE by default. `--workspace` / `--project` narrow it, and
|
|
9
|
+
* they compose. (`agents create` used to force a workspace — that broke the
|
|
10
|
+
* 2026-08-04 decision that a workspace is a lens, not a container.)
|
|
11
|
+
* - Approval: every new agent key goes through the pod's approval page.
|
|
12
|
+
* (`agents create` used to mint with `requireApproval: false`.)
|
|
13
|
+
* - Proof: every path ends with a check against the pod's `/mcp` using the
|
|
14
|
+
* AGENT key — the key the client will actually hold — and a known client
|
|
15
|
+
* reads "connected" only after the pod confirms the key now in its config
|
|
16
|
+
* (`confirmSurfaceKey`, the reader `synap doctor` uses).
|
|
17
|
+
*
|
|
18
|
+
* Three ways in, picked by `planAgentAdd`:
|
|
19
|
+
* known — a client we can wire (claude-code, cursor, codex, …): mint, write
|
|
20
|
+
* its config, verify. Same installer as before (`installForTarget`).
|
|
21
|
+
* custom — anything else: mint, verify, then ONE card with the URL + key
|
|
22
|
+
* (snippets on demand: `synap agents info <name> --snippets`).
|
|
23
|
+
* detect — nothing named: find the agents on this machine, pick, plus a
|
|
24
|
+
* "something else" row that falls through to custom.
|
|
25
|
+
* And one way to bring a key you already hold (`--api-key`), which only
|
|
26
|
+
* registers it locally — handled by the caller, never here.
|
|
27
|
+
*/
|
|
28
|
+
import chalk from "chalk";
|
|
29
|
+
import ora from "ora";
|
|
30
|
+
import prompts from "prompts";
|
|
31
|
+
import { log } from "../utils/logger.js";
|
|
32
|
+
import { checkPodHealth, getPodOverride, listPodProfiles, podNotFoundMessage, RESERVED_AGENT_TYPES, } from "./pod.js";
|
|
33
|
+
import { buildMcpUrl, enrollAgentIfNeeded, installForTarget, isTargetName, provisionAgentKey, TARGETS, verifyMcpConnection, } from "./targets.js";
|
|
34
|
+
import { addAgent } from "./agents-config.js";
|
|
35
|
+
export const AGENT_TEMPLATES = ["twin", "assistant", "custom"];
|
|
36
|
+
export const AGENT_ROLES = ["admin", "editor", "viewer"];
|
|
37
|
+
/**
|
|
38
|
+
* Decide which way in from what the user typed. `kind` is the positional
|
|
39
|
+
* (`synap agents add <kind>`).
|
|
40
|
+
*
|
|
41
|
+
* --api-key → existing-key (wins: the user already holds a key)
|
|
42
|
+
* <kind> = a client → known
|
|
43
|
+
* <kind> = "custom" → custom, name from --name (or prompted)
|
|
44
|
+
* <kind> = other word → custom, named after it
|
|
45
|
+
* --name / --template → custom
|
|
46
|
+
* nothing → detect
|
|
47
|
+
*/
|
|
48
|
+
export function planAgentAdd(kind, opts) {
|
|
49
|
+
if (opts.apiKey)
|
|
50
|
+
return { mode: "existing-key" };
|
|
51
|
+
const k = kind?.trim();
|
|
52
|
+
if (k && isTargetName(k))
|
|
53
|
+
return { mode: "known", target: k };
|
|
54
|
+
if (k && k !== "custom")
|
|
55
|
+
return { mode: "custom", name: opts.name ?? k };
|
|
56
|
+
if (k === "custom" || opts.name || (opts.template && opts.template !== "custom")) {
|
|
57
|
+
return { mode: "custom", name: opts.name };
|
|
58
|
+
}
|
|
59
|
+
return { mode: "detect" };
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* The agent type a custom agent is minted under. The pod keeps ONE agent per
|
|
63
|
+
* (human, agentType), so two differently-named agents need two types: the
|
|
64
|
+
* slug of the name, unless `--type` was given. A twin is always `twin`.
|
|
65
|
+
*/
|
|
66
|
+
export function customAgentType(name, template, explicitType) {
|
|
67
|
+
const localName = name.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "") || template;
|
|
68
|
+
const agentType = explicitType ?? (template === "twin" ? "twin" : localName);
|
|
69
|
+
return { agentType, localName };
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Which pod the agent joins. In order: explicit --pod-url + --api-key, the
|
|
73
|
+
* global `--pod <name>` override, `profileName` (connect's `--name`), the only
|
|
74
|
+
* profile, a pick. With no profile at all, offers to add one inline.
|
|
75
|
+
*/
|
|
76
|
+
export async function resolveAgentPod(opts) {
|
|
77
|
+
if (opts.podUrl && opts.apiKey)
|
|
78
|
+
return { podUrl: opts.podUrl, apiKey: opts.apiKey };
|
|
79
|
+
const override = getPodOverride();
|
|
80
|
+
if (override && !opts.profileName) {
|
|
81
|
+
const name = listPodProfiles().find((p) => p.config.podUrl === override.podUrl)?.name;
|
|
82
|
+
log.info(`Pod: ${chalk.bold(name ?? override.podUrl)} ${chalk.dim(override.podUrl)}`);
|
|
83
|
+
return { podUrl: override.podUrl, apiKey: override.hubApiKey, podName: name };
|
|
84
|
+
}
|
|
85
|
+
const picked = await pickPodProfile(opts.profileName);
|
|
86
|
+
return picked ? { podUrl: picked.config.podUrl, apiKey: picked.config.hubApiKey, podName: picked.name } : null;
|
|
87
|
+
}
|
|
88
|
+
async function pickPodProfile(preferredName) {
|
|
89
|
+
const { podsAdd } = await import("../commands/pods.js");
|
|
90
|
+
let profiles = listPodProfiles();
|
|
91
|
+
// No pods yet — offer to add one inline instead of dead-ending.
|
|
92
|
+
if (profiles.length === 0) {
|
|
93
|
+
log.blank();
|
|
94
|
+
log.info("No pods configured yet.");
|
|
95
|
+
if (!process.stdin.isTTY) {
|
|
96
|
+
log.dim("Add one first: synap pods add <name> <url>");
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
const { shouldAdd } = await prompts({
|
|
100
|
+
type: "confirm",
|
|
101
|
+
name: "shouldAdd",
|
|
102
|
+
message: "Add a pod now?",
|
|
103
|
+
initial: true,
|
|
104
|
+
});
|
|
105
|
+
if (!shouldAdd)
|
|
106
|
+
return null;
|
|
107
|
+
log.blank();
|
|
108
|
+
await podsAdd();
|
|
109
|
+
profiles = listPodProfiles();
|
|
110
|
+
if (profiles.length === 0)
|
|
111
|
+
return null; // user bailed out of add flow
|
|
112
|
+
}
|
|
113
|
+
if (preferredName) {
|
|
114
|
+
const match = profiles.find((p) => p.name === preferredName);
|
|
115
|
+
if (!match) {
|
|
116
|
+
log.error(podNotFoundMessage(preferredName));
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
log.info(`Pod: ${chalk.bold(match.name)} ${chalk.dim(match.config.podUrl)}`);
|
|
120
|
+
return match;
|
|
121
|
+
}
|
|
122
|
+
const active = profiles.find((p) => p.active);
|
|
123
|
+
if (profiles.length === 1 || !process.stdin.isTTY) {
|
|
124
|
+
const p = active ?? profiles[0];
|
|
125
|
+
log.info(`Pod: ${chalk.bold(p.name)} ${chalk.dim(p.config.podUrl)}`);
|
|
126
|
+
return p;
|
|
127
|
+
}
|
|
128
|
+
const { profileName } = await prompts({
|
|
129
|
+
type: "select",
|
|
130
|
+
name: "profileName",
|
|
131
|
+
message: "Which pod?",
|
|
132
|
+
choices: [
|
|
133
|
+
...profiles.map((p) => ({
|
|
134
|
+
title: `${chalk.bold(p.name)}${p.active ? chalk.green(" ← active") : ""} ${chalk.dim(p.config.podUrl)}`,
|
|
135
|
+
value: p.name,
|
|
136
|
+
})),
|
|
137
|
+
{ title: chalk.dim("Add a new pod…"), value: "__add__" },
|
|
138
|
+
],
|
|
139
|
+
initial: active ? profiles.indexOf(active) : 0,
|
|
140
|
+
});
|
|
141
|
+
if (!profileName)
|
|
142
|
+
return null;
|
|
143
|
+
if (profileName === "__add__") {
|
|
144
|
+
log.blank();
|
|
145
|
+
await podsAdd();
|
|
146
|
+
const newest = listPodProfiles().filter((p) => !profiles.some((o) => o.name === p.name));
|
|
147
|
+
if (newest.length === 0)
|
|
148
|
+
return null;
|
|
149
|
+
log.info(`Pod: ${chalk.bold(newest[0].name)} ${chalk.dim(newest[0].config.podUrl)}`);
|
|
150
|
+
return newest[0];
|
|
151
|
+
}
|
|
152
|
+
return profiles.find((p) => p.name === profileName) ?? null;
|
|
153
|
+
}
|
|
154
|
+
async function podIsHealthy(podUrl) {
|
|
155
|
+
const spinner = ora("Checking pod health...").start();
|
|
156
|
+
const health = await checkPodHealth(podUrl);
|
|
157
|
+
if (!health.healthy) {
|
|
158
|
+
spinner.fail(`Pod not reachable at ${podUrl}`);
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
spinner.succeed(`Pod healthy at ${podUrl}`);
|
|
162
|
+
return true;
|
|
163
|
+
}
|
|
164
|
+
function describeScope(scope) {
|
|
165
|
+
const parts = [];
|
|
166
|
+
if (scope.workspaceId)
|
|
167
|
+
parts.push(`workspace ${scope.workspaceId}`);
|
|
168
|
+
if (scope.projectId)
|
|
169
|
+
parts.push(`project ${scope.projectId}`);
|
|
170
|
+
return parts.length ? parts.join(" · ") : "pod-wide";
|
|
171
|
+
}
|
|
172
|
+
// ─── Known client ─────────────────────────────────────────────────────────────
|
|
173
|
+
/** Mint → write the client's config → verify. Returns whether it connected. */
|
|
174
|
+
export async function connectKnownAgent(target, pod, scope, opts = {}) {
|
|
175
|
+
if (!(await podIsHealthy(pod.podUrl)))
|
|
176
|
+
return false;
|
|
177
|
+
if (opts.withMcp && target !== "raycast") {
|
|
178
|
+
log.warn("--with-mcp is Raycast-only; ignored for this target.");
|
|
179
|
+
}
|
|
180
|
+
log.heading(`Connecting ${TARGETS[target].label} → ${pod.podUrl} ${chalk.dim(`(${describeScope(scope)})`)}`);
|
|
181
|
+
const ok = await installForTarget(target, {
|
|
182
|
+
podUrl: pod.podUrl,
|
|
183
|
+
apiKey: pod.apiKey,
|
|
184
|
+
workspaceId: scope.workspaceId,
|
|
185
|
+
projectId: scope.projectId,
|
|
186
|
+
withMcp: opts.withMcp,
|
|
187
|
+
});
|
|
188
|
+
log.blank();
|
|
189
|
+
if (!ok) {
|
|
190
|
+
log.warn(`${TARGETS[target].label} install did not complete — see above.`);
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
// Connected only once the pod confirms the key the install wrote — the same
|
|
194
|
+
// check, and the same line, as `synap init` (`reportSetupCheck`).
|
|
195
|
+
const { reportSetupCheck } = await import("./init-connect.js");
|
|
196
|
+
const { confirmSurfaceKey } = await import("./key-doctor.js");
|
|
197
|
+
const label = TARGETS[target].label;
|
|
198
|
+
const confirmed = reportSetupCheck(label, await confirmSurfaceKey(pod.podUrl, target), `${label} connected to ${pod.podUrl}`);
|
|
199
|
+
if (confirmed)
|
|
200
|
+
log.dim("Run 'synap connections' to see everything connected.");
|
|
201
|
+
return confirmed;
|
|
202
|
+
}
|
|
203
|
+
/** Mint → verify → remember locally → print the URL + key card last. */
|
|
204
|
+
export async function createCustomAgent(pod, req, scope) {
|
|
205
|
+
const template = (req.template ?? "custom");
|
|
206
|
+
if (!AGENT_TEMPLATES.includes(template)) {
|
|
207
|
+
log.error(`Unknown template '${template}'. Use: ${AGENT_TEMPLATES.join(" | ")}`);
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
// Validate up front: the pod treats an unknown role as a non-fatal warning,
|
|
211
|
+
// so a typo would otherwise print as applied.
|
|
212
|
+
if (req.role && !AGENT_ROLES.includes(req.role)) {
|
|
213
|
+
log.error(`Invalid --role "${req.role}". Valid roles: ${AGENT_ROLES.join(", ")}.`);
|
|
214
|
+
return false;
|
|
215
|
+
}
|
|
216
|
+
const role = template === "twin" ? "editor" : (req.role ?? "editor");
|
|
217
|
+
if (!(await podIsHealthy(pod.podUrl)))
|
|
218
|
+
return false;
|
|
219
|
+
let agentName = req.name?.trim();
|
|
220
|
+
if (!agentName && template === "twin") {
|
|
221
|
+
agentName = await twinName(pod);
|
|
222
|
+
}
|
|
223
|
+
if (!agentName) {
|
|
224
|
+
if (!process.stdin.isTTY) {
|
|
225
|
+
log.error("--name is required for a custom agent in non-interactive mode");
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
const { inputName } = await prompts({
|
|
229
|
+
type: "text",
|
|
230
|
+
name: "inputName",
|
|
231
|
+
message: "Name this agent (e.g. researcher, support-bot):",
|
|
232
|
+
validate: (v) => v.trim().length > 0 || "Name is required",
|
|
233
|
+
});
|
|
234
|
+
if (!inputName)
|
|
235
|
+
return false;
|
|
236
|
+
agentName = inputName.trim();
|
|
237
|
+
}
|
|
238
|
+
const { agentType, localName } = customAgentType(agentName, template, req.type);
|
|
239
|
+
// A name that slugs to a client's type (claude-code, cursor, …) would reuse
|
|
240
|
+
// THAT client's agent and rotate its key. An explicit --type is deliberate.
|
|
241
|
+
if (!req.type && RESERVED_AGENT_TYPES.has(agentType)) {
|
|
242
|
+
log.error(`The name "${agentName}" maps to the client type "${agentType}".`);
|
|
243
|
+
log.dim(`To connect that client, run \`synap agents add ${agentType}\`. ` +
|
|
244
|
+
`Otherwise pick another --name, or pass an explicit --type.`);
|
|
245
|
+
return false;
|
|
246
|
+
}
|
|
247
|
+
log.heading(`Adding ${chalk.bold(agentName)} → ${pod.podUrl} ${chalk.dim(`(${describeScope(scope)})`)}`);
|
|
248
|
+
let hubApiKey;
|
|
249
|
+
let agentUserId;
|
|
250
|
+
try {
|
|
251
|
+
// Approval is required (the default) — the same trust step every client
|
|
252
|
+
// connect goes through. Idempotent: re-running for the same name reuses
|
|
253
|
+
// the agent rather than minting a parallel one.
|
|
254
|
+
({ hubApiKey, agentUserId } = await provisionAgentKey(pod.podUrl, pod.apiKey, agentType, {
|
|
255
|
+
idempotent: true,
|
|
256
|
+
}));
|
|
257
|
+
}
|
|
258
|
+
catch (err) {
|
|
259
|
+
log.error(err instanceof Error ? err.message : String(err));
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
// No workspace = enrolled across every workspace (pod-wide). Quiet: the card
|
|
263
|
+
// below states the scope; a progress line here only pushes the key up.
|
|
264
|
+
await enrollAgentIfNeeded(pod.podUrl, pod.apiKey, agentUserId, scope.workspaceId, { role, quiet: true });
|
|
265
|
+
const verifySpinner = ora(`Verifying ${agentName} can reach Synap…`).start();
|
|
266
|
+
const v = await verifyMcpConnection(pod.podUrl, hubApiKey, { timeoutMs: 20_000 }).catch((err) => ({ ok: false, error: err.message }));
|
|
267
|
+
verifySpinner.stop();
|
|
268
|
+
const profile = {
|
|
269
|
+
podName: pod.podName ?? "default",
|
|
270
|
+
apiKey: hubApiKey,
|
|
271
|
+
label: req.label ?? agentName,
|
|
272
|
+
createdAt: new Date().toISOString(),
|
|
273
|
+
template,
|
|
274
|
+
agentUserId,
|
|
275
|
+
};
|
|
276
|
+
if (scope.workspaceId)
|
|
277
|
+
profile.workspaceId = scope.workspaceId;
|
|
278
|
+
if (scope.projectId)
|
|
279
|
+
profile.projectId = scope.projectId;
|
|
280
|
+
addAgent(localName, profile);
|
|
281
|
+
// No CONTEXT.md wizard here: for a custom agent it wrote
|
|
282
|
+
// ~/.synap/contexts/<type>.md, which no client reads, and its template prompt
|
|
283
|
+
// scrolled the key off screen. The card is the LAST thing printed.
|
|
284
|
+
printAgentCard({
|
|
285
|
+
name: agentName,
|
|
286
|
+
localName,
|
|
287
|
+
url: buildMcpUrl(pod.podUrl, scope.workspaceId, scope.projectId),
|
|
288
|
+
hubApiKey,
|
|
289
|
+
scope,
|
|
290
|
+
verified: v.ok ? { toolCount: v.toolCount ?? 0 } : { error: v.error ?? "unknown error" },
|
|
291
|
+
});
|
|
292
|
+
return v.ok;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* What a custom agent needs to be used: the URL, the key, where it looks, and
|
|
296
|
+
* whether it works — nothing else. `synap agents info <name> --show-key`
|
|
297
|
+
* prints the same card from the local cache, so the key is never lost to
|
|
298
|
+
* scrollback.
|
|
299
|
+
*/
|
|
300
|
+
export function printAgentCard(c) {
|
|
301
|
+
log.blank();
|
|
302
|
+
if (!c.verified) {
|
|
303
|
+
console.log(` ${chalk.bold(c.name)} ${chalk.dim(`(${describeScope(c.scope)})`)}`);
|
|
304
|
+
}
|
|
305
|
+
else if ("toolCount" in c.verified) {
|
|
306
|
+
console.log(` ${chalk.green("✔")} ${chalk.bold(c.name)} is ready ${chalk.dim(`(${describeScope(c.scope)} · ${c.verified.toolCount} tools reachable)`)}`);
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
console.log(` ${chalk.yellow("⚠")} ${chalk.bold(c.name)} was created, but its key could not reach Synap: ${c.verified.error}`);
|
|
310
|
+
}
|
|
311
|
+
log.blank();
|
|
312
|
+
console.log(` ${chalk.dim("MCP URL")} ${c.url}`);
|
|
313
|
+
console.log(` ${chalk.dim("API key")} ${chalk.green(c.hubApiKey)}`);
|
|
314
|
+
console.log(` ${chalk.dim("Header")} Authorization: Bearer <API key>`);
|
|
315
|
+
log.blank();
|
|
316
|
+
console.log(" Paste the URL and key into your agent's MCP / connector settings.");
|
|
317
|
+
log.dim(` Show again: synap agents info ${c.localName} --show-key`);
|
|
318
|
+
log.dim(` Config snippets (Claude Code, Cursor, stdio): synap agents info ${c.localName} --snippets`);
|
|
319
|
+
}
|
|
320
|
+
async function twinName(pod) {
|
|
321
|
+
try {
|
|
322
|
+
const res = await fetch(`${pod.podUrl.replace(/\/$/, "")}/api/hub/users/me`, {
|
|
323
|
+
headers: { Authorization: `Bearer ${pod.apiKey}` },
|
|
324
|
+
signal: AbortSignal.timeout(8000),
|
|
325
|
+
});
|
|
326
|
+
if (res.ok) {
|
|
327
|
+
const me = (await res.json());
|
|
328
|
+
if (me.name || me.email)
|
|
329
|
+
return `${me.name ?? me.email}'s Twin`;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
// The twin still gets a name; this read only personalises it.
|
|
334
|
+
}
|
|
335
|
+
return "My Twin";
|
|
336
|
+
}
|
|
337
|
+
// ─── Detect ───────────────────────────────────────────────────────────────────
|
|
338
|
+
const CUSTOM_CHOICE = "__custom__";
|
|
339
|
+
/**
|
|
340
|
+
* Bare `synap agents add`: the agents found on this machine, preselected, plus
|
|
341
|
+
* a "something else" row. Known picks connect together (one approval page);
|
|
342
|
+
* "something else" then runs the custom path.
|
|
343
|
+
*/
|
|
344
|
+
export async function addDetectedAgents(pod, scope) {
|
|
345
|
+
if (!process.stdin.isTTY) {
|
|
346
|
+
log.error("Name the agent in non-interactive mode: synap agents add <client> or --name <name>");
|
|
347
|
+
return false;
|
|
348
|
+
}
|
|
349
|
+
if (!(await podIsHealthy(pod.podUrl)))
|
|
350
|
+
return false;
|
|
351
|
+
const { detectAgents } = await import("./agent-detect.js");
|
|
352
|
+
const rows = detectAgents();
|
|
353
|
+
const found = rows.filter((r) => r.found);
|
|
354
|
+
log.info(found.length > 0
|
|
355
|
+
? `Found on this machine: ${found.map((r) => r.label).join(", ")}.`
|
|
356
|
+
: "No agent found on this machine.");
|
|
357
|
+
const { picked } = await prompts({
|
|
358
|
+
type: "multiselect",
|
|
359
|
+
name: "picked",
|
|
360
|
+
message: "Connect:",
|
|
361
|
+
choices: [
|
|
362
|
+
...rows.map((r) => ({
|
|
363
|
+
title: r.label,
|
|
364
|
+
description: r.found ? r.evidence : "not found on this machine",
|
|
365
|
+
value: r.target,
|
|
366
|
+
selected: r.found,
|
|
367
|
+
})),
|
|
368
|
+
{
|
|
369
|
+
title: "Something else",
|
|
370
|
+
description: "any other agent — you get a URL + key to paste",
|
|
371
|
+
value: CUSTOM_CHOICE,
|
|
372
|
+
},
|
|
373
|
+
],
|
|
374
|
+
hint: "space to toggle, enter to confirm",
|
|
375
|
+
instructions: false,
|
|
376
|
+
});
|
|
377
|
+
const values = (picked ?? []);
|
|
378
|
+
if (values.length === 0) {
|
|
379
|
+
log.dim("Nothing picked.");
|
|
380
|
+
return false;
|
|
381
|
+
}
|
|
382
|
+
const targets = values.filter((v) => v !== CUSTOM_CHOICE && isTargetName(v));
|
|
383
|
+
let ok = true;
|
|
384
|
+
if (targets.length > 0) {
|
|
385
|
+
const outcome = await connectAgentsBatch(pod, targets, scope);
|
|
386
|
+
ok = outcome.notApproved.length === 0 && outcome.failed.length === 0;
|
|
387
|
+
}
|
|
388
|
+
if (values.includes(CUSTOM_CHOICE)) {
|
|
389
|
+
ok = (await createCustomAgent(pod, {}, scope)) && ok;
|
|
390
|
+
}
|
|
391
|
+
return ok;
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Several known clients at once: every key approved on ONE page first, then
|
|
395
|
+
* each installed, one line per client. `synap init` connects through here too.
|
|
396
|
+
*/
|
|
397
|
+
export async function connectAgentsBatch(pod, targets, scope, opts = {}) {
|
|
398
|
+
const { connectAgents } = await import("./init-connect.js");
|
|
399
|
+
const { approveAgentKeysAtOnce } = await import("./batch-approval.js");
|
|
400
|
+
const { withHeldOutput } = await import("./init-output.js");
|
|
401
|
+
const labelOf = opts.labelOf ?? ((t) => TARGETS[t]?.label ?? t);
|
|
402
|
+
return connectAgents(targets, {
|
|
403
|
+
approve: (ts) => approveAgentKeysAtOnce(pod.podUrl, pod.apiKey, ts),
|
|
404
|
+
install: async (target) => {
|
|
405
|
+
const run = await withHeldOutput(() => installForTarget(target, {
|
|
406
|
+
podUrl: pod.podUrl,
|
|
407
|
+
apiKey: pod.apiKey,
|
|
408
|
+
workspaceId: scope.workspaceId,
|
|
409
|
+
projectId: scope.projectId,
|
|
410
|
+
unattended: true,
|
|
411
|
+
}));
|
|
412
|
+
return {
|
|
413
|
+
ok: run.value === true,
|
|
414
|
+
output: run.held,
|
|
415
|
+
error: run.error === undefined
|
|
416
|
+
? undefined
|
|
417
|
+
: run.error instanceof Error
|
|
418
|
+
? run.error.message
|
|
419
|
+
: String(run.error),
|
|
420
|
+
};
|
|
421
|
+
},
|
|
422
|
+
confirm: async (target) => (await import("./key-doctor.js")).confirmSurfaceKey(pod.podUrl, target),
|
|
423
|
+
labelOf,
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
//# sourceMappingURL=agent-door.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-door.js","sourceRoot":"","sources":["../../src/lib/agent-door.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,8 @@ export interface AgentProfile {
|
|
|
8
8
|
template?: "twin" | "assistant" | "custom";
|
|
9
9
|
/** The agent user ID on the pod (from agentUsers.create) */
|
|
10
10
|
agentUserId?: string;
|
|
11
|
+
/** Optional project focus the agent was added with (pod-wide when absent). */
|
|
12
|
+
projectId?: string;
|
|
11
13
|
}
|
|
12
14
|
export declare function listAgents(): Array<{
|
|
13
15
|
name: string;
|
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { readJsonStrict, writeFileAtomic } from "./atomic-file.js";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
const CONFIG_FILE = path.join(os.homedir(), ".synap", "config.json");
|
|
5
|
+
/** Throws on an unreadable file — `{}` here would make the next write wipe every pod profile. */
|
|
5
6
|
function readConfig() {
|
|
6
|
-
|
|
7
|
-
if (fs.existsSync(CONFIG_FILE)) {
|
|
8
|
-
return JSON.parse(fs.readFileSync(CONFIG_FILE, "utf-8"));
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
catch { /* ignore */ }
|
|
12
|
-
return {};
|
|
7
|
+
return readJsonStrict(CONFIG_FILE) ?? {};
|
|
13
8
|
}
|
|
14
9
|
function writeConfig(cfg) {
|
|
15
|
-
|
|
10
|
+
writeFileAtomic(CONFIG_FILE, JSON.stringify(cfg, null, 2), { mode: 0o600 });
|
|
16
11
|
}
|
|
17
12
|
export function listAgents() {
|
|
18
13
|
const cfg = readConfig();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-config.js","sourceRoot":"","sources":["../../src/lib/agents-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"agents-config.js","sourceRoot":"","sources":["../../src/lib/agents-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAwBrE,iGAAiG;AACjG,SAAS,UAAU;IACjB,OAAO,cAAc,CAAmB,WAAW,CAAC,IAAI,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,WAAW,CAAC,GAAqB;IACxC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,OAAqB;IAC1D,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;IAC9B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IAC3B,WAAW,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,aAAa,CAAC,CAAC;IACtE,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxB,WAAW,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED;;;sFAGsF;AACtF,MAAM,UAAU,oBAAoB;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,UAAU,EAAE,SAAS,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;YACnC,MAAM,EAAE,UAAU,CAAC,SAAS;YAC5B,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,EAAE;SACd,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|