@synap-core/cli 1.11.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 +218 -168
- 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 +1 -13
- 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 +7 -1
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/data-extra.d.ts +34 -0
- package/dist/commands/data-extra.js +193 -23
- package/dist/commands/data-extra.js.map +1 -1
- package/dist/commands/data.d.ts +120 -2
- package/dist/commands/data.js +293 -20
- package/dist/commands/data.js.map +1 -1
- package/dist/commands/diagnose.d.ts +66 -4
- package/dist/commands/diagnose.js +285 -28
- package/dist/commands/diagnose.js.map +1 -1
- package/dist/commands/doc.d.ts +11 -4
- package/dist/commands/doc.js +39 -14
- package/dist/commands/doc.js.map +1 -1
- package/dist/commands/doctor.d.ts +112 -3
- package/dist/commands/doctor.js +657 -32
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/explain.js +5 -5
- package/dist/commands/explain.js.map +1 -1
- package/dist/commands/import.d.ts +368 -13
- package/dist/commands/import.js +1064 -54
- 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 +22 -6
- package/dist/commands/knowledge.js +117 -55
- package/dist/commands/knowledge.js.map +1 -1
- package/dist/commands/lens.d.ts +37 -1
- package/dist/commands/lens.js +192 -71
- package/dist/commands/lens.js.map +1 -1
- package/dist/commands/market-authoring.d.ts +29 -2
- package/dist/commands/market-authoring.js +348 -7
- package/dist/commands/market-authoring.js.map +1 -1
- 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 +400 -16
- package/dist/commands/market.js +1802 -146
- package/dist/commands/market.js.map +1 -1
- package/dist/commands/mcp.d.ts +60 -25
- package/dist/commands/mcp.js +251 -64
- 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 +5 -0
- package/dist/commands/pods.js +97 -116
- package/dist/commands/pods.js.map +1 -1
- package/dist/commands/proposals-actions.d.ts +62 -0
- package/dist/commands/proposals-actions.js +143 -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 +478 -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 +16 -0
- 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 +41 -3
- package/dist/commands/upload.js +120 -18
- package/dist/commands/upload.js.map +1 -1
- 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 +900 -180
- 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 +6 -5
- package/dist/lib/capture-lane.js.map +1 -1
- package/dist/lib/capture-structure.d.ts +230 -11
- package/dist/lib/capture-structure.js +251 -13
- package/dist/lib/capture-structure.js.map +1 -1
- 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 +167 -11
- package/dist/lib/cp-packages.js +253 -21
- 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 +29 -8
- package/dist/lib/hub-client.js +328 -55
- package/dist/lib/hub-client.js.map +1 -1
- 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 +66 -112
- package/dist/lib/pod.js +134 -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 +4 -0
- package/dist/lib/template-file.js.map +1 -1
- 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 +23 -17
- package/skills/README.md +12 -10
- package/skills/agent-os/SKILL.md +214 -99
- package/skills/manifest.json +1 -1
- package/skills/onboard/SKILL.md +55 -26
- package/skills/synap/README.md +5 -8
- package/skills/synap/SKILL.md +1086 -283
- 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 +5 -0
- package/skills/synap/cli-operations.md +24 -18
- package/skills/synap/concepts.md +28 -0
- package/skills/synap/content-os.md +10 -1
- package/skills/synap/creative-loop.md +15 -10
- package/skills/synap/crm.md +21 -52
- 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 +17 -15
- 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 +4 -5
- package/skills/synap/workspace-design.md +14 -10
- package/skills/synap/writes.md +97 -24
- package/skills/synap/writing-titles.md +63 -0
- package/skills/synap-app/SKILL.md +2 -2
- package/skills/synap-app/_skill.yaml +1 -1
- package/skills/synap-app/install-commands.md +1 -1
- 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 +306 -16
- package/skills/synap-market/_skill.yaml +1 -1
- package/skills/synap-market/author-and-publish.md +145 -8
- package/skills/synap-market/governance-and-catalog.md +7 -0
- package/skills/synap-market/install.md +79 -1
- package/skills/synap-market/overview.md +74 -6
- 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/commands/template.d.ts +0 -42
- package/dist/commands/template.js +0 -191
- package/dist/commands/template.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/node_modules/@synap/hub-rest-client/dist/index.cjs +0 -1261
- package/node_modules/@synap/hub-rest-client/dist/index.d.cts +0 -1647
- package/node_modules/@synap/hub-rest-client/dist/index.d.ts +0 -1647
- package/node_modules/@synap/hub-rest-client/dist/index.js +0 -1231
- package/node_modules/@synap/hub-rest-client/package.json +0 -45
- package/node_modules/@synap/hub-rest-client/src/client.ts +0 -1631
- package/node_modules/@synap/hub-rest-client/src/errors.ts +0 -30
- package/node_modules/@synap/hub-rest-client/src/index.ts +0 -153
- package/node_modules/@synap/hub-rest-client/src/setup.ts +0 -133
- package/node_modules/@synap/hub-rest-client/src/types.ts +0 -1299
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The per-kind wire envelopes and the ONE unwrap — import-free on purpose.
|
|
3
|
+
*
|
|
4
|
+
* Re-exported (with the workspace types) by `./wire`, the public subpath
|
|
5
|
+
* `@synap-core/workspace-templates/wire`. It has no imports so a consumer that
|
|
6
|
+
* still resolves an older npm copy of this package (the CLI, the CP, the pod)
|
|
7
|
+
* can carry it as a BYTE-IDENTICAL mirror pinned by a tripwire until it can
|
|
8
|
+
* import the subpath. Edit it here; the mirror copies it.
|
|
9
|
+
*
|
|
10
|
+
* What `GET {CP}/api/packages/:slug` serves as `package.definition`, per kind:
|
|
11
|
+
* the outputs of this package's producers (`scripts/catalog-lib.mjs`
|
|
12
|
+
* `toPublishBody`; `toOfficialPublishBody` for workspaces) plus what the CP
|
|
13
|
+
* adds on store/serve (`_meta.slug` via `withTemplateSlug`,
|
|
14
|
+
* `capability.contentHash`).
|
|
15
|
+
*
|
|
16
|
+
* WHY: a skill package is served as `{ _meta, skill: {…} }`. Read flat, every
|
|
17
|
+
* field is `undefined`: install refused a "bodiless" skill and the update door
|
|
18
|
+
* reported "no drift" forever (founder pod 2026-10-13, creative-director). Each
|
|
19
|
+
* consumer had its own cast; this is the one place the envelope is known.
|
|
20
|
+
*
|
|
21
|
+
* Element fields are pinned to the catalog schema (`SKILL_FIELDS`,
|
|
22
|
+
* `CapabilitySpec`) and `AutomationElement` to `PackageAutomationWire` by
|
|
23
|
+
* `schema/wire.parity.test.ts` (compile time).
|
|
24
|
+
*/
|
|
25
|
+
/** The kinds whose served definition this module describes. */
|
|
26
|
+
export declare const WIRE_KINDS: readonly ["workspace", "capability", "skill", "automation", "view"];
|
|
27
|
+
export type WireKind = (typeof WIRE_KINDS)[number];
|
|
28
|
+
/**
|
|
29
|
+
* Other names the same kinds go by: the pod's `market.install` says
|
|
30
|
+
* `template`, the CP category for an automation is `workflow`, and a pack is
|
|
31
|
+
* a workspace-shaped definition.
|
|
32
|
+
*/
|
|
33
|
+
export declare const WIRE_KIND_ALIASES: {
|
|
34
|
+
readonly template: "workspace";
|
|
35
|
+
readonly pack: "workspace";
|
|
36
|
+
readonly workflow: "automation";
|
|
37
|
+
};
|
|
38
|
+
export type WireKindName = WireKind | keyof typeof WIRE_KIND_ALIASES;
|
|
39
|
+
/** `template` → `workspace`, `workflow` → `automation`; `null` for a kind with no wire contract here (e.g. `cell`). */
|
|
40
|
+
export declare function toWireKind(kind: string): WireKind | null;
|
|
41
|
+
/**
|
|
42
|
+
* `definition._meta` as served: the CP stamps `slug` on every row (the pod
|
|
43
|
+
* keys "which space is this template's?" on it); the CLI adds the `version`
|
|
44
|
+
* label it installs.
|
|
45
|
+
*/
|
|
46
|
+
export interface WireMeta {
|
|
47
|
+
slug?: string;
|
|
48
|
+
version?: string;
|
|
49
|
+
[key: string]: unknown;
|
|
50
|
+
}
|
|
51
|
+
/** `meta.icon` / `color` / `domain`, mirrored onto the definition by every publish builder. */
|
|
52
|
+
export interface WireIdentity {
|
|
53
|
+
icon?: string;
|
|
54
|
+
color?: string;
|
|
55
|
+
domain?: string;
|
|
56
|
+
}
|
|
57
|
+
/** A composition dependency. */
|
|
58
|
+
export interface WireDependency {
|
|
59
|
+
slug: string;
|
|
60
|
+
kind?: "workspace" | "capability" | "skill" | "workflow" | "view" | "cell" | "automation";
|
|
61
|
+
relation?: "compose" | "require";
|
|
62
|
+
reason?: string;
|
|
63
|
+
}
|
|
64
|
+
export interface WireEnvelope extends WireIdentity {
|
|
65
|
+
_meta?: WireMeta;
|
|
66
|
+
dependencies?: WireDependency[];
|
|
67
|
+
}
|
|
68
|
+
/** The capability itself (`CapabilityDefinition`). */
|
|
69
|
+
export interface CapabilityElement {
|
|
70
|
+
key: string;
|
|
71
|
+
name: string;
|
|
72
|
+
description?: string;
|
|
73
|
+
params?: Array<Record<string, unknown>>;
|
|
74
|
+
vault?: Array<Record<string, unknown>>;
|
|
75
|
+
tools?: Array<Record<string, unknown>>;
|
|
76
|
+
skills?: Array<Record<string, unknown>>;
|
|
77
|
+
provides?: string[];
|
|
78
|
+
playbooks?: Array<Record<string, unknown>>;
|
|
79
|
+
/** Stamped by the CP on publish; the pod's drift marker. */
|
|
80
|
+
contentHash?: string;
|
|
81
|
+
automations?: Array<Record<string, unknown>>;
|
|
82
|
+
mcpServers?: unknown;
|
|
83
|
+
metadata?: Record<string, unknown>;
|
|
84
|
+
_generated?: unknown;
|
|
85
|
+
}
|
|
86
|
+
/** capability: `{ profiles: [], description, capability }`. */
|
|
87
|
+
export interface CapabilityWire extends WireEnvelope {
|
|
88
|
+
profiles: unknown[];
|
|
89
|
+
description?: string;
|
|
90
|
+
capability: CapabilityElement;
|
|
91
|
+
}
|
|
92
|
+
/** ONE standalone skill. Not a workspace's `skills[]` link list. */
|
|
93
|
+
export interface SkillElement {
|
|
94
|
+
/** The pod-side `load_skill` ref — its own identity, not the package slug. */
|
|
95
|
+
slug?: string;
|
|
96
|
+
name?: string;
|
|
97
|
+
displayName?: string;
|
|
98
|
+
description?: string;
|
|
99
|
+
kind?: "instruction" | "code" | "declarative" | "builtin";
|
|
100
|
+
scope?: "pod" | "user" | "workspace";
|
|
101
|
+
agentTypes?: string[];
|
|
102
|
+
body?: string;
|
|
103
|
+
code?: string;
|
|
104
|
+
providerSpec?: Record<string, unknown>;
|
|
105
|
+
parameters?: Record<string, unknown>;
|
|
106
|
+
category?: string;
|
|
107
|
+
executionMode?: "sync" | "async";
|
|
108
|
+
timeoutSeconds?: number;
|
|
109
|
+
intent?: string;
|
|
110
|
+
[key: string]: unknown;
|
|
111
|
+
}
|
|
112
|
+
/** skill: `{ skill, icon?, color?, domain?, dependencies? }`. */
|
|
113
|
+
export interface SkillWire extends WireEnvelope {
|
|
114
|
+
skill: SkillElement;
|
|
115
|
+
}
|
|
116
|
+
/** One graph automation (= `PackageAutomationWire`): `flowDefinition`, not the authored `flow`. */
|
|
117
|
+
export interface AutomationElement {
|
|
118
|
+
key?: string;
|
|
119
|
+
name: string;
|
|
120
|
+
description?: string;
|
|
121
|
+
triggerType: "event" | "cron" | "webhook" | "manual";
|
|
122
|
+
triggerConfig?: Record<string, unknown>;
|
|
123
|
+
flowDefinition?: {
|
|
124
|
+
nodes: unknown[];
|
|
125
|
+
edges: unknown[];
|
|
126
|
+
precondition?: string;
|
|
127
|
+
};
|
|
128
|
+
status?: "draft" | "active" | "paused";
|
|
129
|
+
}
|
|
130
|
+
/** automation (CP category `workflow`): `{ profiles: [], automations: [one] }`. */
|
|
131
|
+
export interface AutomationWire extends WireEnvelope {
|
|
132
|
+
profiles: unknown[];
|
|
133
|
+
automations: AutomationElement[];
|
|
134
|
+
}
|
|
135
|
+
/** One view, as the pod's view install and update doors read it. */
|
|
136
|
+
export interface ViewElement {
|
|
137
|
+
slug?: string;
|
|
138
|
+
name?: string;
|
|
139
|
+
displayName?: string;
|
|
140
|
+
description?: string;
|
|
141
|
+
type?: string;
|
|
142
|
+
config?: Record<string, unknown>;
|
|
143
|
+
query?: Record<string, unknown>;
|
|
144
|
+
metadata?: Record<string, unknown>;
|
|
145
|
+
scopeProfileSlugs?: string[];
|
|
146
|
+
scopeProfileIds?: string[];
|
|
147
|
+
[key: string]: unknown;
|
|
148
|
+
}
|
|
149
|
+
/** view: `{ views: [...] }`, or a legacy single view with its fields on top (has its own `type`). No catalog producer today. */
|
|
150
|
+
export type ViewWire = (WireEnvelope & {
|
|
151
|
+
views: ViewElement[];
|
|
152
|
+
}) | ViewElement;
|
|
153
|
+
/**
|
|
154
|
+
* What {@link unwrapPackage} returns per kind. `workspace` is the definition
|
|
155
|
+
* itself; `./wire` narrows it to `WorkspaceWire`.
|
|
156
|
+
*/
|
|
157
|
+
export interface PackageElementByKind<W = Record<string, unknown>> {
|
|
158
|
+
workspace: W;
|
|
159
|
+
capability: CapabilityElement;
|
|
160
|
+
skill: SkillElement;
|
|
161
|
+
automation: AutomationElement[];
|
|
162
|
+
view: ViewElement[];
|
|
163
|
+
}
|
|
164
|
+
export type ElementOf<K extends WireKindName, W = Record<string, unknown>> = PackageElementByKind<W>[K extends WireKind ? K : K extends keyof typeof WIRE_KIND_ALIASES ? (typeof WIRE_KIND_ALIASES)[K] : never];
|
|
165
|
+
/**
|
|
166
|
+
* The installable element(s) inside a served definition:
|
|
167
|
+
*
|
|
168
|
+
* skill → the `skill` object (a legacy flat definition is the skill itself)
|
|
169
|
+
* capability → the `capability` object (a flat `CapabilityDefinition` — the
|
|
170
|
+
* pod cache / CP by-key shape — passes through)
|
|
171
|
+
* automation → `automations[]` (`[]` when the definition declares none)
|
|
172
|
+
* view → `views[]`, or a legacy flat view (top-level `type`) as `[def]`, else `[]`
|
|
173
|
+
* workspace → the definition itself
|
|
174
|
+
*
|
|
175
|
+
* An empty array means the definition declares none; the install doors refuse
|
|
176
|
+
* that themselves. A definition that is not an object is a failed read, never
|
|
177
|
+
* an empty one: it throws.
|
|
178
|
+
*/
|
|
179
|
+
export declare function unwrapPackage<K extends WireKindName>(kind: K, definition: unknown): ElementOf<K>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The per-kind wire envelopes and the ONE unwrap — import-free on purpose.
|
|
3
|
+
*
|
|
4
|
+
* Re-exported (with the workspace types) by `./wire`, the public subpath
|
|
5
|
+
* `@synap-core/workspace-templates/wire`. It has no imports so a consumer that
|
|
6
|
+
* still resolves an older npm copy of this package (the CLI, the CP, the pod)
|
|
7
|
+
* can carry it as a BYTE-IDENTICAL mirror pinned by a tripwire until it can
|
|
8
|
+
* import the subpath. Edit it here; the mirror copies it.
|
|
9
|
+
*
|
|
10
|
+
* What `GET {CP}/api/packages/:slug` serves as `package.definition`, per kind:
|
|
11
|
+
* the outputs of this package's producers (`scripts/catalog-lib.mjs`
|
|
12
|
+
* `toPublishBody`; `toOfficialPublishBody` for workspaces) plus what the CP
|
|
13
|
+
* adds on store/serve (`_meta.slug` via `withTemplateSlug`,
|
|
14
|
+
* `capability.contentHash`).
|
|
15
|
+
*
|
|
16
|
+
* WHY: a skill package is served as `{ _meta, skill: {…} }`. Read flat, every
|
|
17
|
+
* field is `undefined`: install refused a "bodiless" skill and the update door
|
|
18
|
+
* reported "no drift" forever (founder pod 2026-10-13, creative-director). Each
|
|
19
|
+
* consumer had its own cast; this is the one place the envelope is known.
|
|
20
|
+
*
|
|
21
|
+
* Element fields are pinned to the catalog schema (`SKILL_FIELDS`,
|
|
22
|
+
* `CapabilitySpec`) and `AutomationElement` to `PackageAutomationWire` by
|
|
23
|
+
* `schema/wire.parity.test.ts` (compile time).
|
|
24
|
+
*/
|
|
25
|
+
// ─── Kinds ──────────────────────────────────────────────────────────────────
|
|
26
|
+
/** The kinds whose served definition this module describes. */
|
|
27
|
+
export const WIRE_KINDS = ["workspace", "capability", "skill", "automation", "view"];
|
|
28
|
+
/**
|
|
29
|
+
* Other names the same kinds go by: the pod's `market.install` says
|
|
30
|
+
* `template`, the CP category for an automation is `workflow`, and a pack is
|
|
31
|
+
* a workspace-shaped definition.
|
|
32
|
+
*/
|
|
33
|
+
export const WIRE_KIND_ALIASES = {
|
|
34
|
+
template: "workspace",
|
|
35
|
+
pack: "workspace",
|
|
36
|
+
workflow: "automation",
|
|
37
|
+
};
|
|
38
|
+
/** `template` → `workspace`, `workflow` → `automation`; `null` for a kind with no wire contract here (e.g. `cell`). */
|
|
39
|
+
export function toWireKind(kind) {
|
|
40
|
+
if (WIRE_KINDS.includes(kind))
|
|
41
|
+
return kind;
|
|
42
|
+
return WIRE_KIND_ALIASES[kind] ?? null;
|
|
43
|
+
}
|
|
44
|
+
// ─── The ONE unwrap ─────────────────────────────────────────────────────────
|
|
45
|
+
const isRecord = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
|
|
46
|
+
export function unwrapPackage(kind, definition) {
|
|
47
|
+
const wireKind = toWireKind(kind);
|
|
48
|
+
if (!wireKind)
|
|
49
|
+
throw new Error(`unwrapPackage: "${kind}" has no wire contract`);
|
|
50
|
+
if (!isRecord(definition)) {
|
|
51
|
+
throw new TypeError(`unwrapPackage(${kind}): the definition is not an object (${definition === null ? "null" : Array.isArray(definition) ? "array" : typeof definition})`);
|
|
52
|
+
}
|
|
53
|
+
switch (wireKind) {
|
|
54
|
+
case "skill":
|
|
55
|
+
return isRecord(definition.skill) ? definition.skill : definition;
|
|
56
|
+
case "capability":
|
|
57
|
+
return isRecord(definition.capability) ? definition.capability : definition;
|
|
58
|
+
case "automation":
|
|
59
|
+
return Array.isArray(definition.automations) ? definition.automations : [];
|
|
60
|
+
case "view":
|
|
61
|
+
if (Array.isArray(definition.views) && definition.views.length > 0)
|
|
62
|
+
return definition.views;
|
|
63
|
+
return definition.type ? [definition] : [];
|
|
64
|
+
case "workspace":
|
|
65
|
+
return definition;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=package-wire.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-wire.js","sourceRoot":"","sources":["../../src/lib/package-wire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,+EAA+E;AAE/E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,CAAU,CAAC;AAG9F;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,WAAW;IACrB,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,YAAY;CACqB,CAAC;AAG9C,uHAAuH;AACvH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAK,UAAgC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAgB,CAAC;IAC9E,OAAQ,iBAA8C,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACvE,CAAC;AA8ID,+EAA+E;AAE/E,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAgC,EAAE,CAC5D,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAiB3D,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,UAAmB;IAC7D,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,wBAAwB,CAAC,CAAC;IAChF,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,SAAS,CACjB,iBAAiB,IAAI,uCAAuC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,UAAU,GAAG,CACtJ,CAAC;IACJ,CAAC;IACD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;QACpE,KAAK,YAAY;YACf,OAAO,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;QAC9E,KAAK,YAAY;YACf,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,KAAK,MAAM;YACT,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,UAAU,CAAC,KAAK,CAAC;YAC5F,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,KAAK,WAAW;YACd,OAAO,UAAU,CAAC;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phone pairing — the link `synap init` prints as a QR so Relay can reach this pod.
|
|
3
|
+
*
|
|
4
|
+
* Contract (Relay is the receiver; it owns the screen that consumes it):
|
|
5
|
+
*
|
|
6
|
+
* synap://pair?v=1&pod=<url-encoded pod origin>[&email=<CP account>]
|
|
7
|
+
*
|
|
8
|
+
* - `v` grammar version. A receiver that sees an unknown `v` must refuse
|
|
9
|
+
* and say "update Relay", never guess.
|
|
10
|
+
* - `pod` the pod's ORIGIN only (scheme + host + port, no path). https, or
|
|
11
|
+
* http for a LAN host only: a public host over plain http would
|
|
12
|
+
* send the phone's sign-in in the clear, so it is refused. Relay
|
|
13
|
+
* pre-fills its sign-in with this pod; it never trusts it for auth.
|
|
14
|
+
* - `email` OPTIONAL: the Synap account the CLI is signed in to. Relay
|
|
15
|
+
* pre-fills the sign-in email with it. Not a credential.
|
|
16
|
+
*
|
|
17
|
+
* `token` is RESERVED by Relay's parser (it ignores it) for a future
|
|
18
|
+
* short-lived pairing token. No pod or CP door mints one yet, so the builder
|
|
19
|
+
* takes none; add the parameter when that door exists.
|
|
20
|
+
*
|
|
21
|
+
* The scheme is `synap` (relay's app.json declares `["synap", "relay"]`), and a
|
|
22
|
+
* single-segment host (`pair`) is what relay's `useDeepLinkHandler` reads as
|
|
23
|
+
* `deepLinkPath === "pair"`.
|
|
24
|
+
*/
|
|
25
|
+
export declare const PAIR_LINK_VERSION = "1";
|
|
26
|
+
export type PairLinkResult = {
|
|
27
|
+
ok: true;
|
|
28
|
+
link: string;
|
|
29
|
+
} | {
|
|
30
|
+
ok: false;
|
|
31
|
+
reason: "invalid-url" | "loopback" | "insecure";
|
|
32
|
+
};
|
|
33
|
+
export declare function buildPairLink(opts: {
|
|
34
|
+
podUrl: string;
|
|
35
|
+
email?: string;
|
|
36
|
+
}): PairLinkResult;
|
|
37
|
+
/** The link as a terminal QR code (half-block characters, fits ~30 rows). */
|
|
38
|
+
export declare function renderTerminalQr(text: string): Promise<string>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phone pairing — the link `synap init` prints as a QR so Relay can reach this pod.
|
|
3
|
+
*
|
|
4
|
+
* Contract (Relay is the receiver; it owns the screen that consumes it):
|
|
5
|
+
*
|
|
6
|
+
* synap://pair?v=1&pod=<url-encoded pod origin>[&email=<CP account>]
|
|
7
|
+
*
|
|
8
|
+
* - `v` grammar version. A receiver that sees an unknown `v` must refuse
|
|
9
|
+
* and say "update Relay", never guess.
|
|
10
|
+
* - `pod` the pod's ORIGIN only (scheme + host + port, no path). https, or
|
|
11
|
+
* http for a LAN host only: a public host over plain http would
|
|
12
|
+
* send the phone's sign-in in the clear, so it is refused. Relay
|
|
13
|
+
* pre-fills its sign-in with this pod; it never trusts it for auth.
|
|
14
|
+
* - `email` OPTIONAL: the Synap account the CLI is signed in to. Relay
|
|
15
|
+
* pre-fills the sign-in email with it. Not a credential.
|
|
16
|
+
*
|
|
17
|
+
* `token` is RESERVED by Relay's parser (it ignores it) for a future
|
|
18
|
+
* short-lived pairing token. No pod or CP door mints one yet, so the builder
|
|
19
|
+
* takes none; add the parameter when that door exists.
|
|
20
|
+
*
|
|
21
|
+
* The scheme is `synap` (relay's app.json declares `["synap", "relay"]`), and a
|
|
22
|
+
* single-segment host (`pair`) is what relay's `useDeepLinkHandler` reads as
|
|
23
|
+
* `deepLinkPath === "pair"`.
|
|
24
|
+
*/
|
|
25
|
+
import QRCode from "qrcode";
|
|
26
|
+
export const PAIR_LINK_VERSION = "1";
|
|
27
|
+
/** Hosts a phone can never reach: the pod is only on this computer. */
|
|
28
|
+
function isLoopbackHost(h) {
|
|
29
|
+
return h === "localhost" || h.endsWith(".localhost") || h === "::1" || h === "0.0.0.0" || /^127\./.test(h);
|
|
30
|
+
}
|
|
31
|
+
/** A host only reachable on the local network, where plain http is tolerable. */
|
|
32
|
+
function isLanHost(h) {
|
|
33
|
+
if (h.endsWith(".local") || h.endsWith(".lan") || h.endsWith(".home.arpa"))
|
|
34
|
+
return true;
|
|
35
|
+
const m = /^(\d{1,3})\.(\d{1,3})\.\d{1,3}\.\d{1,3}$/.exec(h);
|
|
36
|
+
if (m) {
|
|
37
|
+
const a = Number(m[1]);
|
|
38
|
+
const b = Number(m[2]);
|
|
39
|
+
return a === 10 || (a === 172 && b >= 16 && b <= 31) || (a === 192 && b === 168) || (a === 169 && b === 254);
|
|
40
|
+
}
|
|
41
|
+
// IPv6 unique-local (fc00::/7) and link-local (fe80::/10).
|
|
42
|
+
return /^f[cd][0-9a-f]{2}:/.test(h) || /^fe[89ab][0-9a-f]:/.test(h);
|
|
43
|
+
}
|
|
44
|
+
export function buildPairLink(opts) {
|
|
45
|
+
let url;
|
|
46
|
+
try {
|
|
47
|
+
url = new URL(opts.podUrl);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return { ok: false, reason: "invalid-url" };
|
|
51
|
+
}
|
|
52
|
+
if (url.protocol !== "https:" && url.protocol !== "http:")
|
|
53
|
+
return { ok: false, reason: "invalid-url" };
|
|
54
|
+
const host = url.hostname.replace(/^\[|\]$/g, "").toLowerCase();
|
|
55
|
+
if (isLoopbackHost(host))
|
|
56
|
+
return { ok: false, reason: "loopback" };
|
|
57
|
+
if (url.protocol === "http:" && !isLanHost(host))
|
|
58
|
+
return { ok: false, reason: "insecure" };
|
|
59
|
+
const params = new URLSearchParams({ v: PAIR_LINK_VERSION, pod: url.origin });
|
|
60
|
+
if (opts.email)
|
|
61
|
+
params.set("email", opts.email);
|
|
62
|
+
return { ok: true, link: `synap://pair?${params.toString()}` };
|
|
63
|
+
}
|
|
64
|
+
/** The link as a terminal QR code (half-block characters, fits ~30 rows). */
|
|
65
|
+
export async function renderTerminalQr(text) {
|
|
66
|
+
return QRCode.toString(text, { type: "terminal", small: true });
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=pair-link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pair-link.js","sourceRoot":"","sources":["../../src/lib/pair-link.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pod-wide vocabulary — ONE canonical spelling for "not scoped to a workspace".
|
|
3
|
+
*
|
|
4
|
+
* The CLI had four different spellings of the pod-wide idea:
|
|
5
|
+
*
|
|
6
|
+
* 1. `--global` boolean flag on `capture` (index.ts:648 → knowledge.ts:628)
|
|
7
|
+
* 2. omitting `--workspace` documented as "(omit for pod-wide)" on ask/capture/
|
|
8
|
+
* knowledge/cell (index.ts:318, 623, 896, 1858)
|
|
9
|
+
* 3. omitting `--pin-workspace` documented as "(default: pod-wide lens)" (index.ts:116)
|
|
10
|
+
* 4. `__pod_wide__` internal sentinel in the launch picker (launch.ts:576)
|
|
11
|
+
*
|
|
12
|
+
* Only #1 is a knob the user TYPES to opt in; #2 and #3 are absences (a
|
|
13
|
+
* different mechanism — you cannot alias "not passing a flag"), and #4 never
|
|
14
|
+
* leaves the process. So the unification here is narrow and honest: canonicalise
|
|
15
|
+
* the typed opt-in, and leave the absences alone rather than pretend they are
|
|
16
|
+
* spellings of the same switch.
|
|
17
|
+
*
|
|
18
|
+
* CANONICAL: `--pod-wide`. Chosen over `--global` because "global" is already
|
|
19
|
+
* overloaded in this CLI to mean "durable rather than per-session" — `synap use`
|
|
20
|
+
* and `synap project use` both report `scope: "global"` for exactly that other
|
|
21
|
+
* meaning (data.ts:229,281; lens.ts:227,355,396). "Pod-wide" is the term the
|
|
22
|
+
* data model and every help string already use for the scope axis, so it is the
|
|
23
|
+
* one that cannot be misread.
|
|
24
|
+
*
|
|
25
|
+
* `--global` remains an accepted ALIAS — it is what every existing script and
|
|
26
|
+
* the `synap capture --global` line in CLAUDE.md types, and breaking that to win
|
|
27
|
+
* a naming argument would be a worse defect than the inconsistency.
|
|
28
|
+
*/
|
|
29
|
+
/** Every accepted spelling of the pod-wide opt-in. First entry is canonical. */
|
|
30
|
+
export declare const POD_WIDE_FLAGS: readonly ["pod-wide", "global"];
|
|
31
|
+
/** True when a user-supplied scope value spells "pod-wide" rather than naming a workspace. */
|
|
32
|
+
export declare function isPodWideToken(value: string | undefined | null): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the pod-wide opt-in from parsed options, accepting every spelling.
|
|
35
|
+
* Commander camel-cases `--pod-wide` to `podWide`.
|
|
36
|
+
*/
|
|
37
|
+
export declare function resolvePodWide(opts: {
|
|
38
|
+
podWide?: boolean;
|
|
39
|
+
global?: boolean;
|
|
40
|
+
}): boolean;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pod-wide vocabulary — ONE canonical spelling for "not scoped to a workspace".
|
|
3
|
+
*
|
|
4
|
+
* The CLI had four different spellings of the pod-wide idea:
|
|
5
|
+
*
|
|
6
|
+
* 1. `--global` boolean flag on `capture` (index.ts:648 → knowledge.ts:628)
|
|
7
|
+
* 2. omitting `--workspace` documented as "(omit for pod-wide)" on ask/capture/
|
|
8
|
+
* knowledge/cell (index.ts:318, 623, 896, 1858)
|
|
9
|
+
* 3. omitting `--pin-workspace` documented as "(default: pod-wide lens)" (index.ts:116)
|
|
10
|
+
* 4. `__pod_wide__` internal sentinel in the launch picker (launch.ts:576)
|
|
11
|
+
*
|
|
12
|
+
* Only #1 is a knob the user TYPES to opt in; #2 and #3 are absences (a
|
|
13
|
+
* different mechanism — you cannot alias "not passing a flag"), and #4 never
|
|
14
|
+
* leaves the process. So the unification here is narrow and honest: canonicalise
|
|
15
|
+
* the typed opt-in, and leave the absences alone rather than pretend they are
|
|
16
|
+
* spellings of the same switch.
|
|
17
|
+
*
|
|
18
|
+
* CANONICAL: `--pod-wide`. Chosen over `--global` because "global" is already
|
|
19
|
+
* overloaded in this CLI to mean "durable rather than per-session" — `synap use`
|
|
20
|
+
* and `synap project use` both report `scope: "global"` for exactly that other
|
|
21
|
+
* meaning (data.ts:229,281; lens.ts:227,355,396). "Pod-wide" is the term the
|
|
22
|
+
* data model and every help string already use for the scope axis, so it is the
|
|
23
|
+
* one that cannot be misread.
|
|
24
|
+
*
|
|
25
|
+
* `--global` remains an accepted ALIAS — it is what every existing script and
|
|
26
|
+
* the `synap capture --global` line in CLAUDE.md types, and breaking that to win
|
|
27
|
+
* a naming argument would be a worse defect than the inconsistency.
|
|
28
|
+
*/
|
|
29
|
+
/** Every accepted spelling of the pod-wide opt-in. First entry is canonical. */
|
|
30
|
+
export const POD_WIDE_FLAGS = ["pod-wide", "global"];
|
|
31
|
+
/** Accepted string tokens meaning "pod-wide" where a scope VALUE is parsed. */
|
|
32
|
+
const POD_WIDE_TOKENS = new Set(["pod", "pod-wide", "podwide", "pod_wide", "global"]);
|
|
33
|
+
/** True when a user-supplied scope value spells "pod-wide" rather than naming a workspace. */
|
|
34
|
+
export function isPodWideToken(value) {
|
|
35
|
+
if (!value)
|
|
36
|
+
return false;
|
|
37
|
+
return POD_WIDE_TOKENS.has(value.trim().toLowerCase());
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Resolve the pod-wide opt-in from parsed options, accepting every spelling.
|
|
41
|
+
* Commander camel-cases `--pod-wide` to `podWide`.
|
|
42
|
+
*/
|
|
43
|
+
export function resolvePodWide(opts) {
|
|
44
|
+
return Boolean(opts.podWide || opts.global);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=pod-wide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pod-wide.js","sourceRoot":"","sources":["../../src/lib/pod-wide.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAU,CAAC;AAE9D,+EAA+E;AAC/E,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEtF,8FAA8F;AAC9F,MAAM,UAAU,cAAc,CAAC,KAAgC;IAC7D,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAA6C;IAC1E,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC"}
|