@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 @@
|
|
|
1
|
+
{"version":3,"file":"kind-package.js","sourceRoot":"","sources":["../../src/lib/kind-package.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Choose a knowledge entity's TITLE.
|
|
3
|
+
*
|
|
4
|
+
* The title is a short NAME; the claim lives in `ek_claim`. An explicit
|
|
5
|
+
* `--title` wins. Without one, the claim's first sentence is used WHOLE —
|
|
6
|
+
* never clipped. This helper used to cut it at ~80 characters + "…", which
|
|
7
|
+
* left 134 knowledge titles reading as cut on the founder's pod (title audit,
|
|
8
|
+
* 2026-10-12). The pod now reports a title that is too long in the write
|
|
9
|
+
* receipt (`titleLint`), so the writer rewrites it instead of the CLI hiding
|
|
10
|
+
* the problem.
|
|
11
|
+
*
|
|
12
|
+
* Over the pod's hard cap the write would be refused, so it is refused here
|
|
13
|
+
* first, with the flag that fixes it.
|
|
14
|
+
*/
|
|
15
|
+
/** Mirrors `TITLE_HARD_MAX` (`@synap-core/types/titles`); the pod refuses longer. */
|
|
16
|
+
export declare const TITLE_HARD_MAX = 200;
|
|
17
|
+
export type KnowledgeTitleResult = {
|
|
18
|
+
ok: true;
|
|
19
|
+
title: string;
|
|
20
|
+
} | {
|
|
21
|
+
ok: false;
|
|
22
|
+
reason: string;
|
|
23
|
+
};
|
|
24
|
+
export declare function chooseKnowledgeTitle(claim: string, explicitTitle?: string): KnowledgeTitleResult;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Choose a knowledge entity's TITLE.
|
|
3
|
+
*
|
|
4
|
+
* The title is a short NAME; the claim lives in `ek_claim`. An explicit
|
|
5
|
+
* `--title` wins. Without one, the claim's first sentence is used WHOLE —
|
|
6
|
+
* never clipped. This helper used to cut it at ~80 characters + "…", which
|
|
7
|
+
* left 134 knowledge titles reading as cut on the founder's pod (title audit,
|
|
8
|
+
* 2026-10-12). The pod now reports a title that is too long in the write
|
|
9
|
+
* receipt (`titleLint`), so the writer rewrites it instead of the CLI hiding
|
|
10
|
+
* the problem.
|
|
11
|
+
*
|
|
12
|
+
* Over the pod's hard cap the write would be refused, so it is refused here
|
|
13
|
+
* first, with the flag that fixes it.
|
|
14
|
+
*/
|
|
15
|
+
/** Mirrors `TITLE_HARD_MAX` (`@synap-core/types/titles`); the pod refuses longer. */
|
|
16
|
+
export const TITLE_HARD_MAX = 200;
|
|
17
|
+
function oneLine(value) {
|
|
18
|
+
return value.replace(/\s+/g, " ").trim();
|
|
19
|
+
}
|
|
20
|
+
export function chooseKnowledgeTitle(claim, explicitTitle) {
|
|
21
|
+
if (explicitTitle !== undefined) {
|
|
22
|
+
const title = oneLine(explicitTitle);
|
|
23
|
+
if (!title)
|
|
24
|
+
return { ok: false, reason: "--title is empty." };
|
|
25
|
+
if (title.length > TITLE_HARD_MAX) {
|
|
26
|
+
return {
|
|
27
|
+
ok: false,
|
|
28
|
+
reason: `--title is ${title.length} characters; the limit is ${TITLE_HARD_MAX} (aim for 80 or less).`,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return { ok: true, title };
|
|
32
|
+
}
|
|
33
|
+
const flat = oneLine(claim);
|
|
34
|
+
if (!flat)
|
|
35
|
+
return { ok: false, reason: "--claim is empty." };
|
|
36
|
+
// First sentence: stop at the first terminal punctuation followed by space/end.
|
|
37
|
+
const sentence = flat.match(/^(.+?[.!?])(?:\s|$)/)?.[1] ?? flat;
|
|
38
|
+
if (sentence.length > TITLE_HARD_MAX) {
|
|
39
|
+
return {
|
|
40
|
+
ok: false,
|
|
41
|
+
reason: `The claim's first sentence is ${sentence.length} characters, too long for a title (limit ${TITLE_HARD_MAX}). Pass --title "<a short name, 80 characters or less>".`,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return { ok: true, title: sentence };
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=knowledge-title.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge-title.js","sourceRoot":"","sources":["../../src/lib/knowledge-title.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,qFAAqF;AACrF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAMlC,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,aAAsB;IAEtB,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;QAC9D,IAAI,KAAK,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;YAClC,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,cAAc,KAAK,CAAC,MAAM,6BAA6B,cAAc,wBAAwB;aACtG,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC7D,gFAAgF;IAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAChE,IAAI,QAAQ,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;QACrC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,iCAAiC,QAAQ,CAAC,MAAM,4CAA4C,cAAc,0DAA0D;SAC7K,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { TITLE_HARD_MAX, chooseKnowledgeTitle } from "./knowledge-title.js";
|
|
3
|
+
describe("chooseKnowledgeTitle", () => {
|
|
4
|
+
it("keeps a short claim whole", () => {
|
|
5
|
+
expect(chooseKnowledgeTitle("Yjs was inert.")).toEqual({ ok: true, title: "Yjs was inert." });
|
|
6
|
+
});
|
|
7
|
+
it("takes the first sentence of a multi-sentence claim", () => {
|
|
8
|
+
expect(chooseKnowledgeTitle("Session start does not inherit the project lens. The workspace was inherited.")).toEqual({ ok: true, title: "Session start does not inherit the project lens." });
|
|
9
|
+
});
|
|
10
|
+
it("never cuts a long first sentence: it is sent whole for the pod to flag", () => {
|
|
11
|
+
const claim = "synap session start does not inherit the active project lens even though synap lens shows the project from the config file and more";
|
|
12
|
+
expect(claim.length).toBeGreaterThan(80);
|
|
13
|
+
const out = chooseKnowledgeTitle(claim);
|
|
14
|
+
expect(out).toEqual({ ok: true, title: claim });
|
|
15
|
+
});
|
|
16
|
+
it("refuses a first sentence over the hard cap and names --title", () => {
|
|
17
|
+
const out = chooseKnowledgeTitle(`${"word ".repeat(50)}end.`);
|
|
18
|
+
expect(out.ok).toBe(false);
|
|
19
|
+
if (!out.ok)
|
|
20
|
+
expect(out.reason).toMatch(/limit 200.*--title/);
|
|
21
|
+
});
|
|
22
|
+
it("lets an explicit --title win, collapsed to one line", () => {
|
|
23
|
+
expect(chooseKnowledgeTitle("A long claim about grants.", " Grants deny\n by default ")).toEqual({
|
|
24
|
+
ok: true,
|
|
25
|
+
title: "Grants deny by default",
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
it("refuses an empty or over-cap --title, and an empty claim", () => {
|
|
29
|
+
expect(chooseKnowledgeTitle("claim", " ").ok).toBe(false);
|
|
30
|
+
expect(chooseKnowledgeTitle("claim", "x".repeat(TITLE_HARD_MAX + 1)).ok).toBe(false);
|
|
31
|
+
expect(chooseKnowledgeTitle(" ").ok).toBe(false);
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=knowledge-title.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge-title.test.js","sourceRoot":"","sources":["../../src/lib/knowledge-title.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CACJ,oBAAoB,CAAC,+EAA+E,CAAC,CACtG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,KAAK,GACT,qIAAqI,CAAC;QACxI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,GAAG,GAAG,oBAAoB,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,oBAAoB,CAAC,4BAA4B,EAAE,6BAA6B,CAAC,CAAC,CAAC,OAAO,CAAC;YAChG,EAAE,EAAE,IAAI;YACR,KAAK,EAAE,wBAAwB;SAChC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrF,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One agent key per COMPUTER — the `instanceId` every agent-key mint sends.
|
|
3
|
+
*
|
|
4
|
+
* The pod keeps ONE agent identity per (person × agent type): Claude Code on a
|
|
5
|
+
* laptop and Claude Code on a devbox are the same agent. Without an instance
|
|
6
|
+
* label on their keys, approving the devbox's new connection revokes EVERY live
|
|
7
|
+
* key of that agent — the laptop's included (2026-10-12 incident). With a
|
|
8
|
+
* label, `approvePendingAgentKey` replaces only the keys carrying the same one.
|
|
9
|
+
*
|
|
10
|
+
* The label must be STABLE for a computer (a changing label strands the old
|
|
11
|
+
* key alive and never replaces it) and DIFFERENT across computers (a shared
|
|
12
|
+
* label is the incident again). So it is derived from the OS's own machine
|
|
13
|
+
* identifier, never from the hostname (renamed freely) or anything under
|
|
14
|
+
* ~/.synap (copied between machines with the dotfiles). Only when the OS has
|
|
15
|
+
* no readable id does it fall back to a random id persisted once per HOME.
|
|
16
|
+
*
|
|
17
|
+
* The label is a one-way hash: the raw machine id never leaves the computer.
|
|
18
|
+
*/
|
|
19
|
+
export interface MachineIdSources {
|
|
20
|
+
platform: NodeJS.Platform;
|
|
21
|
+
readFile: (p: string) => string | null;
|
|
22
|
+
run: (cmd: string, args: string[]) => string | null;
|
|
23
|
+
/** Fallback store when the OS exposes no id: read, or create once. */
|
|
24
|
+
fallback: () => string;
|
|
25
|
+
}
|
|
26
|
+
export declare const DEFAULT_MACHINE_ID_SOURCES: MachineIdSources;
|
|
27
|
+
/** The OS's machine identifier, or the persisted fallback. Never empty. */
|
|
28
|
+
export declare function readMachineId(src?: MachineIdSources): string;
|
|
29
|
+
/**
|
|
30
|
+
* The instance label for `surface` on the computer with `machineId`. Pure.
|
|
31
|
+
* `m-` + 16 hex chars of sha256(machineId, surface): stable, opaque, and
|
|
32
|
+
* different per computer.
|
|
33
|
+
*/
|
|
34
|
+
export declare function deriveInstanceId(machineId: string, surface: string): string;
|
|
35
|
+
/** This computer's instance label for an agent surface (memoised per process). */
|
|
36
|
+
export declare function machineInstanceId(surface: string, src?: MachineIdSources): string;
|
|
37
|
+
/**
|
|
38
|
+
* This computer's NAME for the person — sent as `instanceLabel` with every
|
|
39
|
+
* agent-key mint, so a connection reads "Claude Code on devbox" on the
|
|
40
|
+
* approval page and in `synap agents list`. Display only: the pod replaces by
|
|
41
|
+
* `instanceId`, never by this. `SYNAP_COMPUTER_NAME` renames it; otherwise the
|
|
42
|
+
* OS hostname without its domain ("MacBook-Pro.local" → "MacBook-Pro"). Pure.
|
|
43
|
+
*/
|
|
44
|
+
export declare function deriveInstanceLabel(hostname: string, override?: string | null): string | undefined;
|
|
45
|
+
/** This computer's name (see {@link deriveInstanceLabel}). */
|
|
46
|
+
export declare function machineInstanceLabel(): string | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* The ONE surface → pod agentType mapping, for the surfaces whose keys are
|
|
49
|
+
* minted under ANOTHER agent type. Every other surface mints under its own
|
|
50
|
+
* name (surface === agentType). Keys are minted with
|
|
51
|
+
* `machineInstanceId(surface)`, but the pod lists connections by agentType —
|
|
52
|
+
* so "is this connection from this computer?" must hash the SURFACE(s), never
|
|
53
|
+
* the agentType alone (ChatGPT's keys are `generic` agents labelled with the
|
|
54
|
+
* `chatgpt` surface hash).
|
|
55
|
+
*/
|
|
56
|
+
export declare const SURFACE_AGENT_TYPE: Readonly<Record<string, string>>;
|
|
57
|
+
/** The pod agentType a surface's keys are minted under. */
|
|
58
|
+
export declare function agentTypeOfSurface(surface: string): string;
|
|
59
|
+
/**
|
|
60
|
+
* This computer's instance ids for keys of `agentType`: one per surface that
|
|
61
|
+
* mints under it (the agentType itself included — a mint with no surface name
|
|
62
|
+
* hashes the agentType).
|
|
63
|
+
*/
|
|
64
|
+
export declare function thisComputerInstanceIds(agentType: string, idFor?: (surface: string) => string): Set<string>;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One agent key per COMPUTER — the `instanceId` every agent-key mint sends.
|
|
3
|
+
*
|
|
4
|
+
* The pod keeps ONE agent identity per (person × agent type): Claude Code on a
|
|
5
|
+
* laptop and Claude Code on a devbox are the same agent. Without an instance
|
|
6
|
+
* label on their keys, approving the devbox's new connection revokes EVERY live
|
|
7
|
+
* key of that agent — the laptop's included (2026-10-12 incident). With a
|
|
8
|
+
* label, `approvePendingAgentKey` replaces only the keys carrying the same one.
|
|
9
|
+
*
|
|
10
|
+
* The label must be STABLE for a computer (a changing label strands the old
|
|
11
|
+
* key alive and never replaces it) and DIFFERENT across computers (a shared
|
|
12
|
+
* label is the incident again). So it is derived from the OS's own machine
|
|
13
|
+
* identifier, never from the hostname (renamed freely) or anything under
|
|
14
|
+
* ~/.synap (copied between machines with the dotfiles). Only when the OS has
|
|
15
|
+
* no readable id does it fall back to a random id persisted once per HOME.
|
|
16
|
+
*
|
|
17
|
+
* The label is a one-way hash: the raw machine id never leaves the computer.
|
|
18
|
+
*/
|
|
19
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
20
|
+
import { execFileSync } from "node:child_process";
|
|
21
|
+
import fs from "node:fs";
|
|
22
|
+
import { ensureSecretDir, writeSecretFile } from "./atomic-file.js";
|
|
23
|
+
import os from "node:os";
|
|
24
|
+
import path from "node:path";
|
|
25
|
+
function readFileOrNull(p) {
|
|
26
|
+
try {
|
|
27
|
+
return fs.readFileSync(p, "utf8");
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function runOrNull(cmd, args) {
|
|
34
|
+
try {
|
|
35
|
+
return execFileSync(cmd, args, { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"], timeout: 5000 });
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/** A random id written once under HOME — used only when the OS has none. */
|
|
42
|
+
function persistedFallbackId() {
|
|
43
|
+
const file = path.join(os.homedir(), ".synap", "machine-id");
|
|
44
|
+
const existing = readFileOrNull(file)?.trim();
|
|
45
|
+
if (existing)
|
|
46
|
+
return existing;
|
|
47
|
+
const id = randomUUID();
|
|
48
|
+
try {
|
|
49
|
+
ensureSecretDir(path.dirname(file));
|
|
50
|
+
writeSecretFile(file, id + "\n");
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
/* unwritable HOME: the id still holds for this run */
|
|
54
|
+
}
|
|
55
|
+
return id;
|
|
56
|
+
}
|
|
57
|
+
export const DEFAULT_MACHINE_ID_SOURCES = {
|
|
58
|
+
platform: process.platform,
|
|
59
|
+
readFile: readFileOrNull,
|
|
60
|
+
run: runOrNull,
|
|
61
|
+
fallback: persistedFallbackId,
|
|
62
|
+
};
|
|
63
|
+
/** The OS's machine identifier, or the persisted fallback. Never empty. */
|
|
64
|
+
export function readMachineId(src = DEFAULT_MACHINE_ID_SOURCES) {
|
|
65
|
+
let id = null;
|
|
66
|
+
if (src.platform === "darwin") {
|
|
67
|
+
const out = src.run("ioreg", ["-rd1", "-c", "IOPlatformExpertDevice"]);
|
|
68
|
+
id = out?.match(/"IOPlatformUUID"\s*=\s*"([^"]+)"/)?.[1];
|
|
69
|
+
}
|
|
70
|
+
else if (src.platform === "linux") {
|
|
71
|
+
id = src.readFile("/etc/machine-id") ?? src.readFile("/var/lib/dbus/machine-id");
|
|
72
|
+
}
|
|
73
|
+
else if (src.platform === "win32") {
|
|
74
|
+
const out = src.run("reg", ["query", "HKLM\\SOFTWARE\\Microsoft\\Cryptography", "/v", "MachineGuid"]);
|
|
75
|
+
id = out?.match(/MachineGuid\s+REG_SZ\s+(\S+)/)?.[1];
|
|
76
|
+
}
|
|
77
|
+
const trimmed = id?.trim();
|
|
78
|
+
return trimmed ? trimmed : src.fallback();
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The instance label for `surface` on the computer with `machineId`. Pure.
|
|
82
|
+
* `m-` + 16 hex chars of sha256(machineId, surface): stable, opaque, and
|
|
83
|
+
* different per computer.
|
|
84
|
+
*/
|
|
85
|
+
export function deriveInstanceId(machineId, surface) {
|
|
86
|
+
const digest = createHash("sha256").update(`synap-instance\u0000${machineId}\u0000${surface}`).digest("hex");
|
|
87
|
+
return `m-${digest.slice(0, 16)}`;
|
|
88
|
+
}
|
|
89
|
+
const cache = new Map();
|
|
90
|
+
/** This computer's instance label for an agent surface (memoised per process). */
|
|
91
|
+
export function machineInstanceId(surface, src) {
|
|
92
|
+
if (src)
|
|
93
|
+
return deriveInstanceId(readMachineId(src), surface);
|
|
94
|
+
const hit = cache.get(surface);
|
|
95
|
+
if (hit)
|
|
96
|
+
return hit;
|
|
97
|
+
const id = deriveInstanceId(readMachineId(), surface);
|
|
98
|
+
cache.set(surface, id);
|
|
99
|
+
return id;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* This computer's NAME for the person — sent as `instanceLabel` with every
|
|
103
|
+
* agent-key mint, so a connection reads "Claude Code on devbox" on the
|
|
104
|
+
* approval page and in `synap agents list`. Display only: the pod replaces by
|
|
105
|
+
* `instanceId`, never by this. `SYNAP_COMPUTER_NAME` renames it; otherwise the
|
|
106
|
+
* OS hostname without its domain ("MacBook-Pro.local" → "MacBook-Pro"). Pure.
|
|
107
|
+
*/
|
|
108
|
+
export function deriveInstanceLabel(hostname, override) {
|
|
109
|
+
const named = override?.trim();
|
|
110
|
+
if (named)
|
|
111
|
+
return named.slice(0, 64);
|
|
112
|
+
const short = hostname.trim().split(".")[0]?.trim();
|
|
113
|
+
return short ? short.slice(0, 64) : undefined;
|
|
114
|
+
}
|
|
115
|
+
/** This computer's name (see {@link deriveInstanceLabel}). */
|
|
116
|
+
export function machineInstanceLabel() {
|
|
117
|
+
return deriveInstanceLabel(os.hostname(), process.env.SYNAP_COMPUTER_NAME);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* The ONE surface → pod agentType mapping, for the surfaces whose keys are
|
|
121
|
+
* minted under ANOTHER agent type. Every other surface mints under its own
|
|
122
|
+
* name (surface === agentType). Keys are minted with
|
|
123
|
+
* `machineInstanceId(surface)`, but the pod lists connections by agentType —
|
|
124
|
+
* so "is this connection from this computer?" must hash the SURFACE(s), never
|
|
125
|
+
* the agentType alone (ChatGPT's keys are `generic` agents labelled with the
|
|
126
|
+
* `chatgpt` surface hash).
|
|
127
|
+
*/
|
|
128
|
+
export const SURFACE_AGENT_TYPE = { chatgpt: "generic" };
|
|
129
|
+
/** The pod agentType a surface's keys are minted under. */
|
|
130
|
+
export function agentTypeOfSurface(surface) {
|
|
131
|
+
return SURFACE_AGENT_TYPE[surface] ?? surface;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* This computer's instance ids for keys of `agentType`: one per surface that
|
|
135
|
+
* mints under it (the agentType itself included — a mint with no surface name
|
|
136
|
+
* hashes the agentType).
|
|
137
|
+
*/
|
|
138
|
+
export function thisComputerInstanceIds(agentType, idFor = (s) => machineInstanceId(s)) {
|
|
139
|
+
const surfaces = [agentType, ...Object.entries(SURFACE_AGENT_TYPE).filter(([, t]) => t === agentType).map(([s]) => s)];
|
|
140
|
+
return new Set(surfaces.map(idFor));
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=machine-instance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine-instance.js","sourceRoot":"","sources":["../../src/lib/machine-instance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The stdio MCP bridge — `synap mcp bridge`.
|
|
3
|
+
*
|
|
4
|
+
* WHY IT EXISTS: a Claude Code conversation's own id is what lets a person
|
|
5
|
+
* reopen the agent that did a piece of work (`claude --resume <id>`). Claude
|
|
6
|
+
* Code hands that id to a STDIO MCP server (`CLAUDE_CODE_SESSION_ID`, plus its
|
|
7
|
+
* cwd) but never to an HTTP one — tested against 2.1.296: `${VAR}` in `headers`
|
|
8
|
+
* is sent literally and `headersHelper` runs without it. So Claude Code spawns
|
|
9
|
+
* this bridge over stdio, and the bridge forwards every JSON-RPC message to the
|
|
10
|
+
* pod's Streamable-HTTP `/mcp`, adding `X-Synap-Conversation` +
|
|
11
|
+
* `X-Synap-Conversation-Cwd`. The pod reads the header as the conversation half
|
|
12
|
+
* of the client key, so every session the conversation touches records it.
|
|
13
|
+
*
|
|
14
|
+
* Transparent by design: it never parses tool payloads, only the envelope
|
|
15
|
+
* (ids, for an error reply when the pod cannot be reached — a request with no
|
|
16
|
+
* reply hangs the client). The pod is stateless, so there is no server→client
|
|
17
|
+
* GET stream to hold open.
|
|
18
|
+
*
|
|
19
|
+
* Known edge: the id is fixed at spawn. After `/clear` Claude Code starts a new
|
|
20
|
+
* session id, but MCP writes keep the pre-clear one (its transcript up to the
|
|
21
|
+
* clear stays resumable). CLI calls send the live id (`hub-client.ts`).
|
|
22
|
+
*/
|
|
23
|
+
export interface McpBridgeOptions {
|
|
24
|
+
url: string;
|
|
25
|
+
apiKey: string;
|
|
26
|
+
/** Extra headers on every request (the conversation headers). */
|
|
27
|
+
headers?: Record<string, string>;
|
|
28
|
+
input?: NodeJS.ReadableStream;
|
|
29
|
+
output?: NodeJS.WritableStream;
|
|
30
|
+
fetchImpl?: typeof fetch;
|
|
31
|
+
log?: (line: string) => void;
|
|
32
|
+
}
|
|
33
|
+
/** Parse SSE text into the `data:` payload of each complete event. */
|
|
34
|
+
export declare function sseEvents(buffer: string): {
|
|
35
|
+
events: string[];
|
|
36
|
+
rest: string;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Pump stdin → pod → stdout until stdin closes and every in-flight request has
|
|
40
|
+
* answered. Resolves when done; never rejects (failures become JSON-RPC errors).
|
|
41
|
+
*/
|
|
42
|
+
export declare function runMcpBridge(opts: McpBridgeOptions): Promise<void>;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The stdio MCP bridge — `synap mcp bridge`.
|
|
3
|
+
*
|
|
4
|
+
* WHY IT EXISTS: a Claude Code conversation's own id is what lets a person
|
|
5
|
+
* reopen the agent that did a piece of work (`claude --resume <id>`). Claude
|
|
6
|
+
* Code hands that id to a STDIO MCP server (`CLAUDE_CODE_SESSION_ID`, plus its
|
|
7
|
+
* cwd) but never to an HTTP one — tested against 2.1.296: `${VAR}` in `headers`
|
|
8
|
+
* is sent literally and `headersHelper` runs without it. So Claude Code spawns
|
|
9
|
+
* this bridge over stdio, and the bridge forwards every JSON-RPC message to the
|
|
10
|
+
* pod's Streamable-HTTP `/mcp`, adding `X-Synap-Conversation` +
|
|
11
|
+
* `X-Synap-Conversation-Cwd`. The pod reads the header as the conversation half
|
|
12
|
+
* of the client key, so every session the conversation touches records it.
|
|
13
|
+
*
|
|
14
|
+
* Transparent by design: it never parses tool payloads, only the envelope
|
|
15
|
+
* (ids, for an error reply when the pod cannot be reached — a request with no
|
|
16
|
+
* reply hangs the client). The pod is stateless, so there is no server→client
|
|
17
|
+
* GET stream to hold open.
|
|
18
|
+
*
|
|
19
|
+
* Known edge: the id is fixed at spawn. After `/clear` Claude Code starts a new
|
|
20
|
+
* session id, but MCP writes keep the pre-clear one (its transcript up to the
|
|
21
|
+
* clear stays resumable). CLI calls send the live id (`hub-client.ts`).
|
|
22
|
+
*/
|
|
23
|
+
import readline from "node:readline";
|
|
24
|
+
/** Ids of the REQUESTS in a message (a batch may carry several). */
|
|
25
|
+
function requestIds(msg) {
|
|
26
|
+
const items = Array.isArray(msg) ? msg : [msg];
|
|
27
|
+
return items
|
|
28
|
+
.filter((m) => !!m && typeof m === "object" && typeof m.method === "string")
|
|
29
|
+
.map((m) => m.id)
|
|
30
|
+
.filter((id) => typeof id === "string" || typeof id === "number");
|
|
31
|
+
}
|
|
32
|
+
/** Parse SSE text into the `data:` payload of each complete event. */
|
|
33
|
+
export function sseEvents(buffer) {
|
|
34
|
+
const events = [];
|
|
35
|
+
const blocks = buffer.split(/\r?\n\r?\n/);
|
|
36
|
+
const rest = blocks.pop() ?? "";
|
|
37
|
+
for (const block of blocks) {
|
|
38
|
+
const data = block
|
|
39
|
+
.split(/\r?\n/)
|
|
40
|
+
.filter((l) => l.startsWith("data:"))
|
|
41
|
+
.map((l) => l.slice(5).replace(/^ /, ""))
|
|
42
|
+
.join("\n");
|
|
43
|
+
if (data)
|
|
44
|
+
events.push(data);
|
|
45
|
+
}
|
|
46
|
+
return { events, rest };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Pump stdin → pod → stdout until stdin closes and every in-flight request has
|
|
50
|
+
* answered. Resolves when done; never rejects (failures become JSON-RPC errors).
|
|
51
|
+
*/
|
|
52
|
+
export async function runMcpBridge(opts) {
|
|
53
|
+
const input = opts.input ?? process.stdin;
|
|
54
|
+
const output = opts.output ?? process.stdout;
|
|
55
|
+
const doFetch = opts.fetchImpl ?? fetch;
|
|
56
|
+
const log = opts.log ?? ((line) => process.stderr.write(`[synap mcp bridge] ${line}\n`));
|
|
57
|
+
let sessionId;
|
|
58
|
+
let protocolVersion;
|
|
59
|
+
const inFlight = new Set();
|
|
60
|
+
const write = (msg) => {
|
|
61
|
+
if (msg && typeof msg === "object") {
|
|
62
|
+
const m = msg;
|
|
63
|
+
const v = m.result?.protocolVersion;
|
|
64
|
+
if (typeof v === "string")
|
|
65
|
+
protocolVersion = v;
|
|
66
|
+
}
|
|
67
|
+
output.write(JSON.stringify(msg) + "\n");
|
|
68
|
+
};
|
|
69
|
+
const writeAll = (payload) => Array.isArray(payload) ? payload.forEach(write) : write(payload);
|
|
70
|
+
const fail = (ids, message) => {
|
|
71
|
+
log(message);
|
|
72
|
+
for (const id of ids)
|
|
73
|
+
write({ jsonrpc: "2.0", id, error: { code: -32000, message } });
|
|
74
|
+
};
|
|
75
|
+
const forward = async (line) => {
|
|
76
|
+
let msg;
|
|
77
|
+
try {
|
|
78
|
+
msg = JSON.parse(line);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
log("dropped a line that is not JSON");
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const ids = requestIds(msg);
|
|
85
|
+
try {
|
|
86
|
+
const res = await doFetch(opts.url, {
|
|
87
|
+
method: "POST",
|
|
88
|
+
headers: {
|
|
89
|
+
Authorization: `Bearer ${opts.apiKey}`,
|
|
90
|
+
"Content-Type": "application/json",
|
|
91
|
+
Accept: "application/json, text/event-stream",
|
|
92
|
+
...(sessionId ? { "Mcp-Session-Id": sessionId } : {}),
|
|
93
|
+
...(protocolVersion ? { "Mcp-Protocol-Version": protocolVersion } : {}),
|
|
94
|
+
...opts.headers,
|
|
95
|
+
},
|
|
96
|
+
body: line,
|
|
97
|
+
});
|
|
98
|
+
const minted = res.headers.get("mcp-session-id");
|
|
99
|
+
if (minted)
|
|
100
|
+
sessionId = minted;
|
|
101
|
+
if (!res.ok) {
|
|
102
|
+
const text = await res.text().catch(() => "");
|
|
103
|
+
fail(ids, `Synap pod answered HTTP ${res.status}${text ? `: ${text.slice(0, 300)}` : ""}`);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const type = res.headers.get("content-type") ?? "";
|
|
107
|
+
if (type.includes("text/event-stream") && res.body) {
|
|
108
|
+
const reader = res.body.getReader();
|
|
109
|
+
const decoder = new TextDecoder();
|
|
110
|
+
let buffer = "";
|
|
111
|
+
for (;;) {
|
|
112
|
+
const { done, value } = await reader.read();
|
|
113
|
+
buffer += done ? decoder.decode() : decoder.decode(value, { stream: true });
|
|
114
|
+
const { events, rest } = sseEvents(done ? buffer + "\n\n" : buffer);
|
|
115
|
+
buffer = rest;
|
|
116
|
+
for (const data of events) {
|
|
117
|
+
try {
|
|
118
|
+
writeAll(JSON.parse(data));
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
log("dropped an event that is not JSON");
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (done)
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const text = await res.text();
|
|
130
|
+
if (text.trim())
|
|
131
|
+
writeAll(JSON.parse(text));
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
fail(ids, `Synap pod unreachable at ${opts.url}: ${err instanceof Error ? err.message : String(err)}`);
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
const rl = readline.createInterface({ input, crlfDelay: Infinity });
|
|
138
|
+
for await (const raw of rl) {
|
|
139
|
+
const line = raw.trim();
|
|
140
|
+
if (!line)
|
|
141
|
+
continue;
|
|
142
|
+
const p = forward(line).finally(() => inFlight.delete(p));
|
|
143
|
+
inFlight.add(p);
|
|
144
|
+
}
|
|
145
|
+
await Promise.all(inFlight);
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=mcp-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-bridge.js","sourceRoot":"","sources":["../../src/lib/mcp-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|