@synap-core/cli 1.10.0 → 1.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -198
- package/dist/build-info.json +6 -0
- package/dist/commands/agent-run.js +3 -2
- package/dist/commands/agent-run.js.map +1 -1
- package/dist/commands/agents.d.ts +33 -17
- package/dist/commands/agents.js +203 -237
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/app.d.ts +143 -0
- package/dist/commands/app.js +523 -0
- package/dist/commands/app.js.map +1 -0
- package/dist/commands/automate.d.ts +21 -0
- package/dist/commands/automate.js +42 -0
- package/dist/commands/automate.js.map +1 -0
- package/dist/commands/automation-schema.test.d.ts +16 -0
- package/dist/commands/automation-schema.test.js +77 -0
- package/dist/commands/automation-schema.test.js.map +1 -0
- package/dist/commands/automation.d.ts +12 -0
- package/dist/commands/automation.js +80 -35
- package/dist/commands/automation.js.map +1 -1
- package/dist/commands/bridge-setup.d.ts +14 -1
- package/dist/commands/bridge-setup.js +392 -128
- package/dist/commands/bridge-setup.js.map +1 -1
- package/dist/commands/cap-connections.d.ts +4 -4
- package/dist/commands/cap-connections.js +14 -14
- package/dist/commands/cap-connections.js.map +1 -1
- package/dist/commands/capability.d.ts +2 -0
- package/dist/commands/capability.js +297 -176
- package/dist/commands/capability.js.map +1 -1
- package/dist/commands/catalog.d.ts +275 -0
- package/dist/commands/catalog.js +481 -0
- package/dist/commands/catalog.js.map +1 -0
- package/dist/commands/cell.d.ts +155 -8
- package/dist/commands/cell.js +416 -40
- package/dist/commands/cell.js.map +1 -1
- package/dist/commands/centrality.js +3 -14
- package/dist/commands/centrality.js.map +1 -1
- package/dist/commands/connect.d.ts +38 -13
- package/dist/commands/connect.js +68 -167
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/connections.d.ts +3 -2
- package/dist/commands/connections.js +95 -25
- package/dist/commands/connections.js.map +1 -1
- package/dist/commands/context.js +9 -2
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/data-extra.d.ts +34 -0
- package/dist/commands/data-extra.js +198 -25
- package/dist/commands/data-extra.js.map +1 -1
- package/dist/commands/data.d.ts +120 -2
- package/dist/commands/data.js +307 -24
- package/dist/commands/data.js.map +1 -1
- package/dist/commands/diagnose.d.ts +66 -4
- package/dist/commands/diagnose.js +329 -29
- package/dist/commands/diagnose.js.map +1 -1
- package/dist/commands/digest.js +2 -1
- package/dist/commands/digest.js.map +1 -1
- package/dist/commands/doc.d.ts +25 -4
- package/dist/commands/doc.js +100 -18
- package/dist/commands/doc.js.map +1 -1
- package/dist/commands/doctor.d.ts +130 -0
- package/dist/commands/doctor.js +814 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/events.js +3 -1
- package/dist/commands/events.js.map +1 -1
- package/dist/commands/explain.js +5 -5
- package/dist/commands/explain.js.map +1 -1
- package/dist/commands/graph.js +5 -3
- package/dist/commands/graph.js.map +1 -1
- package/dist/commands/import.d.ts +368 -13
- package/dist/commands/import.js +1096 -55
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/init.d.ts +20 -9
- package/dist/commands/init.js +433 -973
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/keys.d.ts +1 -0
- package/dist/commands/keys.js +15 -2
- package/dist/commands/keys.js.map +1 -1
- package/dist/commands/knowledge.d.ts +28 -6
- package/dist/commands/knowledge.js +358 -73
- package/dist/commands/knowledge.js.map +1 -1
- package/dist/commands/launch.js +2 -2
- package/dist/commands/launch.js.map +1 -1
- package/dist/commands/lens.d.ts +37 -1
- package/dist/commands/lens.js +193 -72
- package/dist/commands/lens.js.map +1 -1
- package/dist/commands/market-authoring.d.ts +72 -0
- package/dist/commands/market-authoring.js +566 -0
- package/dist/commands/market-authoring.js.map +1 -0
- package/dist/commands/market-official.d.ts +58 -0
- package/dist/commands/market-official.js +84 -0
- package/dist/commands/market-official.js.map +1 -0
- package/dist/commands/market.d.ts +419 -20
- package/dist/commands/market.js +2124 -193
- package/dist/commands/market.js.map +1 -1
- package/dist/commands/mcp.d.ts +70 -13
- package/dist/commands/mcp.js +308 -40
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/open.d.ts +39 -9
- package/dist/commands/open.js +80 -25
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/playbook.d.ts +42 -0
- package/dist/commands/playbook.js +162 -0
- package/dist/commands/playbook.js.map +1 -0
- package/dist/commands/pod.js +1 -1
- package/dist/commands/pod.js.map +1 -1
- package/dist/commands/pods.d.ts +19 -0
- package/dist/commands/pods.js +220 -85
- package/dist/commands/pods.js.map +1 -1
- package/dist/commands/proposals-actions.d.ts +62 -0
- package/dist/commands/proposals-actions.js +146 -8
- package/dist/commands/proposals-actions.js.map +1 -1
- package/dist/commands/proposals-await.d.ts +68 -0
- package/dist/commands/proposals-await.js +248 -0
- package/dist/commands/proposals-await.js.map +1 -0
- package/dist/commands/proton-setup.d.ts +73 -0
- package/dist/commands/proton-setup.js +577 -0
- package/dist/commands/proton-setup.js.map +1 -0
- package/dist/commands/providers.d.ts +23 -0
- package/dist/commands/providers.js +126 -1
- package/dist/commands/providers.js.map +1 -1
- package/dist/commands/raycast.js +6 -2
- package/dist/commands/raycast.js.map +1 -1
- package/dist/commands/rule.d.ts +150 -0
- package/dist/commands/rule.js +447 -0
- package/dist/commands/rule.js.map +1 -0
- package/dist/commands/session-wait.d.ts +111 -0
- package/dist/commands/session-wait.js +209 -0
- package/dist/commands/session-wait.js.map +1 -0
- package/dist/commands/sessions.d.ts +52 -0
- package/dist/commands/sessions.js +479 -58
- package/dist/commands/sessions.js.map +1 -1
- package/dist/commands/skill-manage.d.ts +21 -0
- package/dist/commands/skill-manage.js +136 -19
- package/dist/commands/skill-manage.js.map +1 -1
- package/dist/commands/skills.js +19 -1
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/status.d.ts +1 -4
- package/dist/commands/status.js +5 -34
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/statusline.backoff.test.d.ts +13 -0
- package/dist/commands/statusline.backoff.test.js +100 -0
- package/dist/commands/statusline.backoff.test.js.map +1 -0
- package/dist/commands/statusline.js +16 -9
- package/dist/commands/statusline.js.map +1 -1
- package/dist/commands/sync-status.d.ts +12 -0
- package/dist/commands/sync-status.js +125 -0
- package/dist/commands/sync-status.js.map +1 -0
- package/dist/commands/templates-retire.d.ts +34 -0
- package/dist/commands/templates-retire.js +192 -0
- package/dist/commands/templates-retire.js.map +1 -0
- package/dist/commands/tools.js +6 -21
- package/dist/commands/tools.js.map +1 -1
- package/dist/commands/tracks.d.ts +51 -0
- package/dist/commands/tracks.js +291 -0
- package/dist/commands/tracks.js.map +1 -0
- package/dist/commands/update.d.ts +3 -11
- package/dist/commands/update.js +5 -134
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/upload.d.ts +68 -0
- package/dist/commands/upload.js +257 -0
- package/dist/commands/upload.js.map +1 -0
- package/dist/commands/vendor.d.ts +28 -0
- package/dist/commands/vendor.js +110 -0
- package/dist/commands/vendor.js.map +1 -0
- package/dist/commands/versions.js +6 -0
- package/dist/commands/versions.js.map +1 -1
- package/dist/commands/view.js +10 -5
- package/dist/commands/view.js.map +1 -1
- package/dist/commands/whoami.d.ts +23 -3
- package/dist/commands/whoami.js +169 -23
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/worker.d.ts +122 -0
- package/dist/commands/worker.js +435 -0
- package/dist/commands/worker.js.map +1 -0
- package/dist/commands/worker.test.d.ts +1 -0
- package/dist/commands/worker.test.js +116 -0
- package/dist/commands/worker.test.js.map +1 -0
- package/dist/commands/workspace-ops.d.ts +35 -0
- package/dist/commands/workspace-ops.js +153 -0
- package/dist/commands/workspace-ops.js.map +1 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.js +1009 -171
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-connections.d.ts +31 -0
- package/dist/lib/agent-connections.js +33 -0
- package/dist/lib/agent-connections.js.map +1 -0
- package/dist/lib/agent-detect.d.ts +27 -0
- package/dist/lib/agent-detect.js +71 -0
- package/dist/lib/agent-detect.js.map +1 -0
- package/dist/lib/agent-door.d.ts +138 -0
- package/dist/lib/agent-door.js +426 -0
- package/dist/lib/agent-door.js.map +1 -0
- package/dist/lib/agents-config.d.ts +2 -0
- package/dist/lib/agents-config.js +4 -9
- package/dist/lib/agents-config.js.map +1 -1
- package/dist/lib/approval-poll.d.ts +31 -2
- package/dist/lib/approval-poll.js +20 -7
- package/dist/lib/approval-poll.js.map +1 -1
- package/dist/lib/atomic-file.d.ts +48 -0
- package/dist/lib/atomic-file.js +129 -0
- package/dist/lib/atomic-file.js.map +1 -0
- package/dist/lib/auth.d.ts +14 -9
- package/dist/lib/auth.js +44 -61
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/batch-approval.d.ts +85 -0
- package/dist/lib/batch-approval.js +170 -0
- package/dist/lib/batch-approval.js.map +1 -0
- package/dist/lib/capture-lane.d.ts +6 -5
- package/dist/lib/capture-lane.js +11 -8
- package/dist/lib/capture-lane.js.map +1 -1
- package/dist/lib/capture-structure.d.ts +342 -0
- package/dist/lib/capture-structure.js +295 -0
- package/dist/lib/capture-structure.js.map +1 -0
- package/dist/lib/catalog-templates.d.ts +59 -0
- package/dist/lib/catalog-templates.js +126 -0
- package/dist/lib/catalog-templates.js.map +1 -0
- package/dist/lib/cli-build.d.ts +19 -0
- package/dist/lib/cli-build.js +37 -0
- package/dist/lib/cli-build.js.map +1 -0
- package/dist/lib/conversation-headers.d.ts +18 -0
- package/dist/lib/conversation-headers.js +32 -0
- package/dist/lib/conversation-headers.js.map +1 -0
- package/dist/lib/cp-packages.d.ts +216 -4
- package/dist/lib/cp-packages.js +414 -11
- package/dist/lib/cp-packages.js.map +1 -1
- package/dist/lib/credential-class.d.ts +117 -0
- package/dist/lib/credential-class.js +116 -0
- package/dist/lib/credential-class.js.map +1 -0
- package/dist/lib/describe-lens.d.ts +35 -0
- package/dist/lib/describe-lens.js +40 -0
- package/dist/lib/describe-lens.js.map +1 -1
- package/dist/lib/device-connect.d.ts +125 -0
- package/dist/lib/device-connect.js +256 -0
- package/dist/lib/device-connect.js.map +1 -0
- package/dist/lib/directory-lens.d.ts +99 -0
- package/dist/lib/directory-lens.js +187 -0
- package/dist/lib/directory-lens.js.map +1 -0
- package/dist/lib/exporter-coverage.d.ts +71 -0
- package/dist/lib/exporter-coverage.js +97 -0
- package/dist/lib/exporter-coverage.js.map +1 -0
- package/dist/lib/hub-client.d.ts +43 -9
- package/dist/lib/hub-client.js +429 -65
- package/dist/lib/hub-client.js.map +1 -1
- package/dist/lib/id.d.ts +23 -0
- package/dist/lib/id.js +35 -0
- package/dist/lib/id.js.map +1 -0
- package/dist/lib/init-connect.d.ts +41 -0
- package/dist/lib/init-connect.js +75 -0
- package/dist/lib/init-connect.js.map +1 -0
- package/dist/lib/init-exit.d.ts +24 -0
- package/dist/lib/init-exit.js +41 -0
- package/dist/lib/init-exit.js.map +1 -0
- package/dist/lib/init-flow.d.ts +25 -0
- package/dist/lib/init-flow.js +40 -0
- package/dist/lib/init-flow.js.map +1 -0
- package/dist/lib/init-handoff.d.ts +16 -0
- package/dist/lib/init-handoff.js +19 -0
- package/dist/lib/init-handoff.js.map +1 -0
- package/dist/lib/init-output.d.ts +18 -0
- package/dist/lib/init-output.js +43 -0
- package/dist/lib/init-output.js.map +1 -0
- package/dist/lib/init-pod.d.ts +45 -0
- package/dist/lib/init-pod.js +36 -0
- package/dist/lib/init-pod.js.map +1 -0
- package/dist/lib/installed.d.ts +210 -11
- package/dist/lib/installed.js +234 -36
- package/dist/lib/installed.js.map +1 -1
- package/dist/lib/key-approval.d.ts +57 -0
- package/dist/lib/key-approval.js +117 -0
- package/dist/lib/key-approval.js.map +1 -0
- package/dist/lib/key-diagnosis.d.ts +56 -0
- package/dist/lib/key-diagnosis.js +227 -0
- package/dist/lib/key-diagnosis.js.map +1 -0
- package/dist/lib/key-doctor.d.ts +136 -0
- package/dist/lib/key-doctor.js +286 -0
- package/dist/lib/key-doctor.js.map +1 -0
- package/dist/lib/key-locations.d.ts +120 -0
- package/dist/lib/key-locations.js +326 -0
- package/dist/lib/key-locations.js.map +1 -0
- package/dist/lib/key-source.d.ts +66 -0
- package/dist/lib/key-source.js +106 -0
- package/dist/lib/key-source.js.map +1 -0
- package/dist/lib/key-state.d.ts +70 -0
- package/dist/lib/key-state.js +115 -0
- package/dist/lib/key-state.js.map +1 -0
- package/dist/lib/kind-package.d.ts +181 -0
- package/dist/lib/kind-package.js +679 -0
- package/dist/lib/kind-package.js.map +1 -0
- package/dist/lib/knowledge-title.d.ts +24 -0
- package/dist/lib/knowledge-title.js +46 -0
- package/dist/lib/knowledge-title.js.map +1 -0
- package/dist/lib/knowledge-title.test.d.ts +1 -0
- package/dist/lib/knowledge-title.test.js +34 -0
- package/dist/lib/knowledge-title.test.js.map +1 -0
- package/dist/lib/machine-instance.d.ts +64 -0
- package/dist/lib/machine-instance.js +142 -0
- package/dist/lib/machine-instance.js.map +1 -0
- package/dist/lib/mcp-bridge.d.ts +42 -0
- package/dist/lib/mcp-bridge.js +147 -0
- package/dist/lib/mcp-bridge.js.map +1 -0
- package/dist/lib/mcp-bridge.test.d.ts +1 -0
- package/dist/lib/mcp-bridge.test.js +90 -0
- package/dist/lib/mcp-bridge.test.js.map +1 -0
- package/dist/lib/mcp-call.d.ts +30 -0
- package/dist/lib/mcp-call.js +107 -0
- package/dist/lib/mcp-call.js.map +1 -0
- package/dist/lib/mcp-snippets.d.ts +53 -0
- package/dist/lib/mcp-snippets.js +82 -0
- package/dist/lib/mcp-snippets.js.map +1 -0
- package/dist/lib/next-steps.d.ts +8 -0
- package/dist/lib/next-steps.js +31 -1
- package/dist/lib/next-steps.js.map +1 -1
- package/dist/lib/package-wire.d.ts +179 -0
- package/dist/lib/package-wire.js +68 -0
- package/dist/lib/package-wire.js.map +1 -0
- package/dist/lib/pair-link.d.ts +38 -0
- package/dist/lib/pair-link.js +68 -0
- package/dist/lib/pair-link.js.map +1 -0
- package/dist/lib/pod-wide.d.ts +40 -0
- package/dist/lib/pod-wide.js +46 -0
- package/dist/lib/pod-wide.js.map +1 -0
- package/dist/lib/pod.d.ts +119 -115
- package/dist/lib/pod.js +206 -412
- package/dist/lib/pod.js.map +1 -1
- package/dist/lib/project-ref.d.ts +9 -3
- package/dist/lib/project-ref.js +10 -4
- package/dist/lib/project-ref.js.map +1 -1
- package/dist/lib/review-credential.d.ts +119 -0
- package/dist/lib/review-credential.js +147 -0
- package/dist/lib/review-credential.js.map +1 -0
- package/dist/lib/safe-open.d.ts +49 -0
- package/dist/lib/safe-open.js +119 -0
- package/dist/lib/safe-open.js.map +1 -0
- package/dist/lib/session-lens.d.ts +40 -1
- package/dist/lib/session-lens.js +54 -4
- package/dist/lib/session-lens.js.map +1 -1
- package/dist/lib/superwhisper-import.d.ts +8 -0
- package/dist/lib/superwhisper-import.js +14 -7
- package/dist/lib/superwhisper-import.js.map +1 -1
- package/dist/lib/superwhisper-title.test.d.ts +1 -0
- package/dist/lib/superwhisper-title.test.js +18 -0
- package/dist/lib/superwhisper-title.test.js.map +1 -0
- package/dist/lib/targets.d.ts +134 -10
- package/dist/lib/targets.js +962 -258
- package/dist/lib/targets.js.map +1 -1
- package/dist/lib/template-file.d.ts +78 -0
- package/dist/lib/template-file.js +140 -0
- package/dist/lib/template-file.js.map +1 -0
- package/dist/lib/template-lifecycle.d.ts +217 -0
- package/dist/lib/template-lifecycle.js +433 -0
- package/dist/lib/template-lifecycle.js.map +1 -0
- package/dist/lib/template-steps.d.ts +88 -0
- package/dist/lib/template-steps.js +118 -0
- package/dist/lib/template-steps.js.map +1 -0
- package/dist/lib/time-ago.d.ts +2 -0
- package/dist/lib/time-ago.js +15 -0
- package/dist/lib/time-ago.js.map +1 -0
- package/dist/utils/logger.js +5 -2
- package/dist/utils/logger.js.map +1 -1
- package/package.json +25 -18
- package/skills/README.md +12 -10
- package/skills/agent-os/SKILL.md +220 -99
- package/skills/manifest.json +2 -2
- package/skills/onboard/SKILL.md +61 -25
- package/skills/synap/README.md +5 -8
- package/skills/synap/SKILL.md +1185 -301
- package/skills/synap/_order.txt +7 -0
- package/skills/synap/_skill.yaml +1 -1
- package/skills/synap/automations.md +15 -0
- package/skills/synap/capture.md +54 -151
- package/skills/synap/cli-operations.md +24 -18
- package/skills/synap/common-mistakes.md +1 -0
- package/skills/synap/concepts.md +28 -0
- package/skills/synap/content-os.md +92 -0
- package/skills/synap/creative-loop.md +15 -10
- package/skills/synap/crm.md +21 -52
- package/skills/synap/digesting-a-channel.md +25 -0
- package/skills/synap/document-embeds.md +141 -47
- package/skills/synap/escalation-ladder.md +20 -10
- package/skills/synap/focus-sessions.md +47 -21
- package/skills/synap/from-intent.md +142 -0
- package/skills/synap/governance-rules.md +4 -4
- package/skills/synap/governance.md +10 -7
- package/skills/synap/hand-off.md +33 -0
- package/skills/synap/inline-patterns.md +15 -7
- package/skills/synap/lenses.md +33 -15
- package/skills/synap/linking.md +41 -40
- package/skills/synap/mcp-remote-servers.md +64 -0
- package/skills/synap/mental-model.md +24 -22
- package/skills/synap/multi-entity-capture.md +6 -4
- package/skills/synap/operating-mode-rules.md +1 -1
- package/skills/synap/processes.md +118 -0
- package/skills/synap/quick-reference.md +5 -1
- package/skills/synap/reading.md +3 -1
- package/skills/synap/reflexes.md +12 -42
- package/skills/synap/viewframe-cells.md +38 -5
- package/skills/synap/work-flow.md +1 -1
- package/skills/synap/work-model.md +96 -0
- package/skills/synap/worked-examples.md +21 -1
- package/skills/synap/workspace-design.md +14 -10
- package/skills/synap/writes.md +165 -35
- package/skills/synap/writing-titles.md +63 -0
- package/skills/synap-app/SKILL.md +319 -0
- package/skills/synap-app/_order.txt +5 -0
- package/skills/synap-app/_skill.yaml +20 -0
- package/skills/synap-app/creating-the-base-app.md +64 -0
- package/skills/synap-app/governance.md +42 -0
- package/skills/synap-app/install-commands.md +55 -0
- package/skills/synap-app/overview.md +50 -0
- package/skills/synap-app/using-the-sdk.md +73 -0
- package/skills/synap-design/SKILL.md +474 -0
- package/skills/synap-design/_order.txt +4 -0
- package/skills/synap-design/_skill.yaml +21 -0
- package/skills/synap-design/loop.md +134 -0
- package/skills/synap-design/overview.md +44 -0
- package/skills/synap-design/principles.md +130 -0
- package/skills/synap-design/system.md +133 -0
- package/skills/synap-market/SKILL.md +625 -0
- package/skills/synap-market/_order.txt +5 -0
- package/skills/synap-market/_skill.yaml +24 -0
- package/skills/synap-market/author-and-publish.md +212 -0
- package/skills/synap-market/discover-and-fetch.md +59 -0
- package/skills/synap-market/governance-and-catalog.md +63 -0
- package/skills/synap-market/install.md +133 -0
- package/skills/synap-market/overview.md +119 -0
- package/skills/synap-schema/SKILL.md +172 -10
- package/skills/synap-schema/_order.txt +2 -0
- package/skills/synap-schema/_skill.yaml +4 -2
- package/skills/synap-schema/common-mistakes.md +4 -2
- package/skills/synap-schema/discover-profiles.md +1 -1
- package/skills/synap-schema/entity-scope.md +15 -3
- package/skills/synap-schema/extend-first.md +29 -0
- package/skills/synap-schema/extend-vs-create.md +1 -1
- package/skills/synap-schema/intent-vocabulary-ssot.md +111 -0
- package/skills/synap-schema/property-types.md +1 -1
- package/skills/synap-schema/relations.md +1 -1
- package/skills/synap-ui/SKILL.md +19 -12
- package/skills/synap-ui/_skill.yaml +1 -1
- package/skills/synap-ui/ai-companion.md +1 -1
- package/skills/synap-ui/arranging-bento.md +2 -0
- package/skills/synap-ui/bento-layouts.md +10 -10
- package/skills/synap-ui/bento-recipes.md +313 -543
- package/skills/synap-ui/four-builds.md +5 -0
- package/skills/synap-ui/view-types.md +2 -2
- package/skills/synap-ui/widget-catalog.md +22 -278
- package/templates/automations/bookmark-enrichment.automation.json +290 -13
- package/templates/automations/url-bookmark-capture.automation.json +73 -11
- package/templates/skills/authoring-playbooks/SKILL.md +6 -3
- package/templates/skills/authoring-playbooks/reference/stages-contract.md +15 -0
- package/templates/skills/authoring-playbooks/reference/worked-example.md +3 -0
- package/dist/commands/infra.d.ts +0 -21
- package/dist/commands/infra.js +0 -262
- package/dist/commands/infra.js.map +0 -1
- package/dist/lib/browser-auth.d.ts +0 -35
- package/dist/lib/browser-auth.js +0 -170
- package/dist/lib/browser-auth.js.map +0 -1
- package/dist/lib/openclaw.d.ts +0 -32
- package/dist/lib/openclaw.js +0 -164
- package/dist/lib/openclaw.js.map +0 -1
- package/dist/lib/seed.d.ts +0 -13
- package/dist/lib/seed.js +0 -135
- package/dist/lib/seed.js.map +0 -1
|
@@ -0,0 +1,566 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `synap market` — the template AUTHORING loop.
|
|
3
|
+
* =============================================
|
|
4
|
+
*
|
|
5
|
+
* The other half of `market` (browse/install/update/installed lives in
|
|
6
|
+
* `market.ts`): the create→publish path an author walks.
|
|
7
|
+
*
|
|
8
|
+
* synap market scaffold <slug> — write a minimal valid <slug>.template.yaml
|
|
9
|
+
* synap market scaffold <slug> --kind cell|view|workflow|capability — a standalone package file
|
|
10
|
+
* synap market validate <file> — run the ONE shared validator, fast feedback
|
|
11
|
+
* synap market publish <file> — validate, then upsert to the CP (private by default)
|
|
12
|
+
* synap market publish --from-workspace <id> — serialize a LIVE workspace, then publish
|
|
13
|
+
* synap market publish --from-project <id> — serialize a LIVE project's used workspaces into a suite, then publish
|
|
14
|
+
* synap market unpublish <slug> — flip a published package back to private
|
|
15
|
+
*
|
|
16
|
+
* REUSE: validation is the shared `validateTemplate` (via `lib/template-file`);
|
|
17
|
+
* CP transport is `lib/cp-packages` (`publishPackage`/`unpublishPackage`); the
|
|
18
|
+
* pod `to-template` / `to-suite-template` serializers are reached through the
|
|
19
|
+
* standard hub client. No fetch is hand-rolled here.
|
|
20
|
+
*/
|
|
21
|
+
import { existsSync, writeFileSync } from "node:fs";
|
|
22
|
+
import { dirname, resolve as resolvePath } from "node:path";
|
|
23
|
+
import chalk from "chalk";
|
|
24
|
+
import { log } from "../utils/logger.js";
|
|
25
|
+
import { parseTemplateFile, validateTemplateYaml, templateToPackageDefinition, packageDefinitionToYaml, scaffoldTemplateYaml, } from "../lib/template-file.js";
|
|
26
|
+
import { publishPackage, unpublishPackage, OFFICIAL_USE_CATALOG_HINT, CpWriteError, } from "../lib/cp-packages.js";
|
|
27
|
+
import { resolveHubConfig, hubPost, renderHubError } from "../lib/hub-client.js";
|
|
28
|
+
import { exporterDropWarnings } from "../lib/exporter-coverage.js";
|
|
29
|
+
import { isStandalonePackageFile, parseStandalonePackageFile, validateStandalonePackage, scaffoldStandalonePackageJson, resolveCellCodeFiles, SCAFFOLDABLE_KINDS, } from "../lib/kind-package.js";
|
|
30
|
+
/** Print a validator failure list human-readably: `rule` · `path` — `message`. */
|
|
31
|
+
function printValidationErrors(errors) {
|
|
32
|
+
for (const e of errors) {
|
|
33
|
+
console.error(` ${chalk.red("✗")} ${chalk.yellow(e.rule)} ${chalk.dim(e.path)}\n ${e.message}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// ─── validate ────────────────────────────────────────────────────────────────
|
|
37
|
+
export async function marketValidate(file, opts) {
|
|
38
|
+
// A standalone view/cell/skill/workflow file branches off IMMEDIATELY — the
|
|
39
|
+
// SAME discriminator `marketPublish` uses. Without this, `validate` ran the
|
|
40
|
+
// WORKSPACE validator over a standalone file and rejected it with three
|
|
41
|
+
// envelope errors (missing `meta`, `workspace`, `profiles`) — including files
|
|
42
|
+
// `market scaffold --kind cell` had JUST WRITTEN. Step 02 of the documented
|
|
43
|
+
// four-command loop rejected step 01's own output, for every non-workspace
|
|
44
|
+
// kind. Found by walking the loop on 2026-09-05.
|
|
45
|
+
let peeked;
|
|
46
|
+
try {
|
|
47
|
+
peeked = parseTemplateFile(file);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
peeked = undefined;
|
|
51
|
+
}
|
|
52
|
+
if (isStandalonePackageFile(peeked)) {
|
|
53
|
+
const parsed = parseStandalonePackageFile(file);
|
|
54
|
+
// `validateStandalonePackage` returns plain message strings, not the
|
|
55
|
+
// `ValidationError` records the workspace validator emits — so it prints
|
|
56
|
+
// directly rather than through `printValidationErrors`. `baseDir` lets it
|
|
57
|
+
// check a cell's `codeFile` actually exists — the same resolution root
|
|
58
|
+
// `resolveCellCodeFiles` uses at publish time.
|
|
59
|
+
const errors = validateStandalonePackage(parsed, {
|
|
60
|
+
baseDir: dirname(resolvePath(process.cwd(), file)),
|
|
61
|
+
});
|
|
62
|
+
if (opts.json) {
|
|
63
|
+
console.log(JSON.stringify({ ok: errors.length === 0, errors }, null, 2));
|
|
64
|
+
if (errors.length > 0)
|
|
65
|
+
process.exit(1);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (errors.length === 0) {
|
|
69
|
+
log.success(`${file} is valid.`);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
log.error(`${file} has ${errors.length} validation error${errors.length === 1 ? "" : "s"}:`);
|
|
73
|
+
for (const message of errors)
|
|
74
|
+
log.hint(`✗ ${message}`);
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
let tpl;
|
|
78
|
+
try {
|
|
79
|
+
tpl = parseTemplateFile(file);
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
if (opts.json) {
|
|
83
|
+
console.log(JSON.stringify({ ok: false, errors: [{ rule: "parse", path: file, message: e.message }] }, null, 2));
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
log.error(e.message);
|
|
87
|
+
}
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
const result = validateTemplateYaml(tpl);
|
|
91
|
+
if (opts.json) {
|
|
92
|
+
console.log(JSON.stringify(result, null, 2));
|
|
93
|
+
if (!result.ok)
|
|
94
|
+
process.exit(1);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (result.ok) {
|
|
98
|
+
log.success(`${file} is valid.`);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
log.error(`${file} has ${result.errors.length} validation error${result.errors.length === 1 ? "" : "s"}:`);
|
|
102
|
+
printValidationErrors(result.errors);
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
// ─── scaffold ──────────────────────────────────────────────────────────────
|
|
106
|
+
export async function marketScaffold(slug, opts) {
|
|
107
|
+
// `--kind cell|view|workflow|capability|skill` scaffolds a STANDALONE package
|
|
108
|
+
// file instead of a workspace template — see `lib/kind-package.ts`.
|
|
109
|
+
// (`skill` used to be refused here, on the grounds that the CP had no slot to
|
|
110
|
+
// publish one into; that slot now exists, so the special case is gone.)
|
|
111
|
+
//
|
|
112
|
+
// The accepted list is `SCAFFOLDABLE_KINDS` — the same constant `src/index.ts`
|
|
113
|
+
// builds the `--kind` help string from, so the help can never again advertise
|
|
114
|
+
// a kind this branch refuses (it advertised `skill`) or hide one it accepts
|
|
115
|
+
// (it hid `workflow`, which `validateStandalonePackage` has always handled).
|
|
116
|
+
if (opts.kind && opts.kind !== "workspace") {
|
|
117
|
+
if (!SCAFFOLDABLE_KINDS.includes(opts.kind)) {
|
|
118
|
+
log.error(`Unknown --kind "${opts.kind}" — expected one of: ${SCAFFOLDABLE_KINDS.join(", ")}.`);
|
|
119
|
+
process.exit(1);
|
|
120
|
+
}
|
|
121
|
+
const kind = opts.kind;
|
|
122
|
+
const fileName = `${slug}.${kind}.json`;
|
|
123
|
+
const target = resolvePath(process.cwd(), fileName);
|
|
124
|
+
if (existsSync(target)) {
|
|
125
|
+
if (opts.json) {
|
|
126
|
+
console.log(JSON.stringify({ ok: false, error: "exists", path: target }, null, 2));
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
log.error(`${fileName} already exists — refusing to overwrite.`);
|
|
130
|
+
log.hint("Edit it in place, or choose a different slug.");
|
|
131
|
+
}
|
|
132
|
+
process.exit(1);
|
|
133
|
+
}
|
|
134
|
+
writeFileSync(target, scaffoldStandalonePackageJson(kind, slug), "utf-8");
|
|
135
|
+
if (opts.json) {
|
|
136
|
+
console.log(JSON.stringify({ ok: true, path: target, slug, kind }, null, 2));
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
log.success(`Wrote ${fileName}`);
|
|
140
|
+
log.dim("Edit it in place, then:");
|
|
141
|
+
if (kind === "cell") {
|
|
142
|
+
log.dim(` tip: replace "code" with "codeFile": "./path/to/your-entry.tsx" to publish from a real source file — \`market publish\` bundles it (esbuild) and inlines the result, no hand-pasted bundle needed.`);
|
|
143
|
+
}
|
|
144
|
+
log.dim(` synap market validate ${fileName}`);
|
|
145
|
+
log.dim(` synap market publish ${fileName}`);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const fileName = `${slug}.template.yaml`;
|
|
149
|
+
const target = resolvePath(process.cwd(), fileName);
|
|
150
|
+
// Create-then-configure: refuse to clobber, never overwrite an author's work.
|
|
151
|
+
if (existsSync(target)) {
|
|
152
|
+
if (opts.json) {
|
|
153
|
+
console.log(JSON.stringify({ ok: false, error: "exists", path: target }, null, 2));
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
log.error(`${fileName} already exists — refusing to overwrite.`);
|
|
157
|
+
log.hint("Edit it in place, or choose a different slug.");
|
|
158
|
+
}
|
|
159
|
+
process.exit(1);
|
|
160
|
+
}
|
|
161
|
+
writeFileSync(target, scaffoldTemplateYaml(slug), "utf-8");
|
|
162
|
+
if (opts.json) {
|
|
163
|
+
console.log(JSON.stringify({ ok: true, path: target, slug }, null, 2));
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
log.success(`Wrote ${fileName}`);
|
|
167
|
+
log.dim("Edit it in place, then:");
|
|
168
|
+
log.dim(` synap market validate ${fileName}`);
|
|
169
|
+
log.dim(` synap market publish ${fileName}`);
|
|
170
|
+
}
|
|
171
|
+
// ─── publish ─────────────────────────────────────────────────────────────────
|
|
172
|
+
/**
|
|
173
|
+
* POST `/api/hub/workspaces/:id/to-template` — the pod-native serializer that
|
|
174
|
+
* turns a LIVE workspace into a full `PackageDefinition`. The one door for the
|
|
175
|
+
* `--from-workspace` publish path; mirrors every other `/api/hub/*` call.
|
|
176
|
+
*/
|
|
177
|
+
export async function fetchWorkspaceAsTemplate(workspaceId, opts) {
|
|
178
|
+
const cfg = await resolveHubConfig(opts);
|
|
179
|
+
const res = (await hubPost(`/workspaces/${encodeURIComponent(workspaceId)}/to-template`, {}, cfg, 60_000));
|
|
180
|
+
if (!res?.definition) {
|
|
181
|
+
throw new Error(`Workspace ${workspaceId} produced no template definition.`);
|
|
182
|
+
}
|
|
183
|
+
return res.definition;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* POST `/api/hub/projects/:id/to-suite-template` — walk a project's uses→workspace
|
|
187
|
+
* edges: full constituent workspace packages + thin suite (`suite` tag, `require`
|
|
188
|
+
* deps, harvested playbooks). The one door for `--from-project`.
|
|
189
|
+
*/
|
|
190
|
+
export async function fetchProjectAsSuiteTemplate(projectId, opts) {
|
|
191
|
+
const cfg = await resolveHubConfig(opts);
|
|
192
|
+
const res = (await hubPost(`/projects/${encodeURIComponent(projectId)}/to-suite-template`, {}, cfg, 120_000));
|
|
193
|
+
if (!res?.definition) {
|
|
194
|
+
throw new Error(`Project ${projectId} produced no suite definition.`);
|
|
195
|
+
}
|
|
196
|
+
return {
|
|
197
|
+
definition: res.definition,
|
|
198
|
+
constituents: Array.isArray(res.constituents) ? res.constituents : [],
|
|
199
|
+
requiredSlugs: Array.isArray(res.requiredSlugs) ? res.requiredSlugs : [],
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Parse `--price <usd>` into CP columns. Dollars → cents. Settlement/Stripe is
|
|
204
|
+
* NOT this wave — we only stamp `pricingModel: one_time` + `priceUsd`.
|
|
205
|
+
*/
|
|
206
|
+
export function parsePriceUsdFlag(raw) {
|
|
207
|
+
const dollars = Number(raw);
|
|
208
|
+
if (!Number.isFinite(dollars) || dollars <= 0) {
|
|
209
|
+
throw new Error(`--price must be a positive dollar amount (got "${raw}")`);
|
|
210
|
+
}
|
|
211
|
+
const cents = Math.round(dollars * 100);
|
|
212
|
+
if (cents <= 0) {
|
|
213
|
+
throw new Error(`--price must be at least $0.01 (got "${raw}")`);
|
|
214
|
+
}
|
|
215
|
+
return { pricingModel: "one_time", priceUsd: cents };
|
|
216
|
+
}
|
|
217
|
+
/** Surface a publish outcome (created/updated/no-op) uniformly. */
|
|
218
|
+
function reportPublish(r) {
|
|
219
|
+
const vis = r.isPublic ? chalk.green("public") : chalk.dim("private");
|
|
220
|
+
switch (r.outcome) {
|
|
221
|
+
case "created":
|
|
222
|
+
log.success(`Published ${chalk.bold(r.slug)} ${chalk.dim(r.version)} (${vis})`);
|
|
223
|
+
break;
|
|
224
|
+
case "updated":
|
|
225
|
+
log.success(`Updated ${chalk.bold(r.slug)} → ${chalk.dim(r.version)} (${vis})`);
|
|
226
|
+
break;
|
|
227
|
+
case "no-op":
|
|
228
|
+
log.info(`${chalk.bold(r.slug)} is already up to date at ${chalk.dim(r.version)} (${vis}) — nothing to publish.`);
|
|
229
|
+
break;
|
|
230
|
+
}
|
|
231
|
+
// Attribution is WRITE-TIME ONLY at the CP: `if (body.vendorId) {…}` with no
|
|
232
|
+
// else, and no back-fill. Silence here is how every CLI-published package
|
|
233
|
+
// ended up orphaned from its author — the publish looked like a full success
|
|
234
|
+
// because, apart from the author page, it was.
|
|
235
|
+
if (r.officialVendorWithheld) {
|
|
236
|
+
log.hint(OFFICIAL_USE_CATALOG_HINT);
|
|
237
|
+
}
|
|
238
|
+
else if (!r.vendorAttached) {
|
|
239
|
+
log.warn("Published without a publisher profile — attributed to nobody.");
|
|
240
|
+
log.hint(`Create one (synap vendor create <slug>), then publish again.`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/** Turn a CP write failure into a clear, honest message — never swallow the server `detail`; special-case the reserved-slug 403. */
|
|
244
|
+
function reportCpWriteError(err, slug) {
|
|
245
|
+
if (err.status === 403 && /reserved/i.test(err.serverMessage) && slug) {
|
|
246
|
+
log.error(`"${slug}" is a reserved Synap bedrock template — publish under a different slug.`);
|
|
247
|
+
log.hint("Reserved: foundation, crm, operations, content-os, enterprise-os, research-base.");
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
// A 401 here is almost always "no CP session", not a broken package — publish
|
|
251
|
+
// authenticates as the HUMAN account (the pod agent key does not carry CP
|
|
252
|
+
// credentials, by design). Naming the door beats restating the wall: a bare
|
|
253
|
+
// "Unauthorized" sends the author back to re-check a file that was fine.
|
|
254
|
+
if (err.status === 401) {
|
|
255
|
+
log.error("Publish failed (HTTP 401): not signed in to the Synap account.");
|
|
256
|
+
log.hint("Run `synap login`, then publish again. Your package file is unchanged.");
|
|
257
|
+
log.hint("Publishing authenticates as YOU, not as the pod's agent key — that separation is deliberate: approval and publication stay human.");
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
260
|
+
log.error(`Publish failed${err.status ? ` (HTTP ${err.status})` : ""}: ${err.serverMessage}`);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Publish a STANDALONE (non-workspace) package file — a view/cell/skill,
|
|
264
|
+
* discriminated by a top-level `category` key the workspace-template envelope
|
|
265
|
+
* never carries (see `lib/kind-package.ts`). Reuses the SAME `publishPackage`
|
|
266
|
+
* CP transport as the workspace path — no second fetch, just a different
|
|
267
|
+
* identity (`opts.slug`/`opts.displayName`/`opts.category` instead of
|
|
268
|
+
* `_meta.slug`/`workspaceName`).
|
|
269
|
+
*/
|
|
270
|
+
async function marketPublishStandalone(file, opts) {
|
|
271
|
+
const isPublic = opts.public === true;
|
|
272
|
+
let pkg;
|
|
273
|
+
try {
|
|
274
|
+
pkg = parseStandalonePackageFile(file);
|
|
275
|
+
}
|
|
276
|
+
catch (e) {
|
|
277
|
+
log.error(e.message);
|
|
278
|
+
process.exit(1);
|
|
279
|
+
}
|
|
280
|
+
const baseDir = dirname(resolvePath(process.cwd(), file));
|
|
281
|
+
const structuralErrors = validateStandalonePackage(pkg, { baseDir });
|
|
282
|
+
if (structuralErrors.length) {
|
|
283
|
+
if (opts.json) {
|
|
284
|
+
console.log(JSON.stringify({ ok: false, stage: "validate", errors: structuralErrors }, null, 2));
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
log.error(`${file} failed validation — not published:`);
|
|
288
|
+
for (const e of structuralErrors)
|
|
289
|
+
log.hint(e);
|
|
290
|
+
}
|
|
291
|
+
process.exit(1);
|
|
292
|
+
}
|
|
293
|
+
// Inline any `codeFile` cell entries into `code` — the field the CP schema
|
|
294
|
+
// actually validates; `codeFile` never reaches the wire (see
|
|
295
|
+
// `lib/kind-package.ts`). Bundling defaults to `--bundle-deps` HERE, on the
|
|
296
|
+
// publish path only: a published cell is exactly the case Chrome MV3's
|
|
297
|
+
// "reviewers must be able to see the code that runs" rationale targets —
|
|
298
|
+
// our `deps` map otherwise resolves through esm.sh at runtime, so the
|
|
299
|
+
// published artifact is not what actually executes. `synap cell build`
|
|
300
|
+
// invoked directly keeps its own default (external deps via esm.sh)
|
|
301
|
+
// unchanged; `--no-bundle-deps` opts a publish back out of this default.
|
|
302
|
+
let definition = pkg.definition;
|
|
303
|
+
if (pkg.category === "cell") {
|
|
304
|
+
const { definition: resolvedDefinition, errors: codeFileErrors } = await resolveCellCodeFiles(pkg, baseDir, {
|
|
305
|
+
bundleDeps: opts.bundleDeps !== false,
|
|
306
|
+
});
|
|
307
|
+
if (codeFileErrors.length) {
|
|
308
|
+
if (opts.json) {
|
|
309
|
+
console.log(JSON.stringify({ ok: false, stage: "build", errors: codeFileErrors }, null, 2));
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
log.error(`${file} failed to build — not published:`);
|
|
313
|
+
for (const e of codeFileErrors)
|
|
314
|
+
log.hint(e);
|
|
315
|
+
}
|
|
316
|
+
process.exit(1);
|
|
317
|
+
}
|
|
318
|
+
definition = resolvedDefinition;
|
|
319
|
+
}
|
|
320
|
+
try {
|
|
321
|
+
const r = await publishPackage({ ...definition, description: pkg.description }, {
|
|
322
|
+
isPublic,
|
|
323
|
+
category: pkg.category,
|
|
324
|
+
slug: pkg.slug,
|
|
325
|
+
displayName: pkg.displayName,
|
|
326
|
+
});
|
|
327
|
+
if (opts.json) {
|
|
328
|
+
console.log(JSON.stringify({ ok: true, ...r }, null, 2));
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
reportPublish(r);
|
|
332
|
+
}
|
|
333
|
+
catch (e) {
|
|
334
|
+
if (e instanceof CpWriteError) {
|
|
335
|
+
if (opts.json) {
|
|
336
|
+
console.log(JSON.stringify({ ok: false, stage: "publish", status: e.status, error: e.serverMessage, slug: pkg.slug }, null, 2));
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
reportCpWriteError(e, pkg.slug);
|
|
340
|
+
}
|
|
341
|
+
process.exit(1);
|
|
342
|
+
}
|
|
343
|
+
log.error(`Publish failed: ${e.message}`);
|
|
344
|
+
process.exit(1);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
export async function marketPublish(file, opts) {
|
|
348
|
+
// A standalone view/cell/skill file branches off IMMEDIATELY — it has no
|
|
349
|
+
// `meta`/`workspace` envelope, so the WorkspaceYaml parser below would
|
|
350
|
+
// reject it. `--from-workspace` / `--from-project` never produce this shape,
|
|
351
|
+
// so only the `file` path is checked. `isStandalonePackageFile` peeks the
|
|
352
|
+
// SAME parse `parseStandalonePackageFile` will redo — cheap, and keeps the
|
|
353
|
+
// discriminator logic in ONE place (`kind-package.ts`).
|
|
354
|
+
if (file && !opts.fromWorkspace && !opts.fromProject) {
|
|
355
|
+
let peeked;
|
|
356
|
+
try {
|
|
357
|
+
peeked = parseTemplateFile(file);
|
|
358
|
+
}
|
|
359
|
+
catch {
|
|
360
|
+
peeked = undefined;
|
|
361
|
+
}
|
|
362
|
+
if (isStandalonePackageFile(peeked)) {
|
|
363
|
+
await marketPublishStandalone(file, opts);
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
if (opts.fromWorkspace && opts.fromProject) {
|
|
368
|
+
log.error("Pass only one of --from-workspace or --from-project.");
|
|
369
|
+
process.exit(1);
|
|
370
|
+
}
|
|
371
|
+
// Default PRIVATE; `--public` flips it. `--private` is accepted as the explicit
|
|
372
|
+
// default so a script can state intent.
|
|
373
|
+
const isPublic = opts.public === true;
|
|
374
|
+
let pricing;
|
|
375
|
+
if (opts.price !== undefined) {
|
|
376
|
+
try {
|
|
377
|
+
pricing = parsePriceUsdFlag(opts.price);
|
|
378
|
+
}
|
|
379
|
+
catch (e) {
|
|
380
|
+
log.error(e.message);
|
|
381
|
+
process.exit(1);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
// 1. Obtain the definition + a WorkspaceYaml view to validate.
|
|
385
|
+
let def;
|
|
386
|
+
let yamlForValidate;
|
|
387
|
+
let sourceLabel;
|
|
388
|
+
// Keys the pod's workspace serialiser has NO projection for. Unconditional
|
|
389
|
+
// for `--from-workspace` / `--from-project` (both walk that door) and EMPTY
|
|
390
|
+
// for a hand-written file, because the file path is not a projection — what
|
|
391
|
+
// the author wrote is what gets published. See `lib/exporter-coverage.ts`.
|
|
392
|
+
let dropWarnings = [];
|
|
393
|
+
let lossyLabel = "workspace";
|
|
394
|
+
if (opts.fromWorkspace) {
|
|
395
|
+
try {
|
|
396
|
+
def = await fetchWorkspaceAsTemplate(opts.fromWorkspace, opts);
|
|
397
|
+
}
|
|
398
|
+
catch (e) {
|
|
399
|
+
renderHubError(e);
|
|
400
|
+
process.exit(1);
|
|
401
|
+
}
|
|
402
|
+
dropWarnings = exporterDropWarnings();
|
|
403
|
+
yamlForValidate = packageDefinitionToYaml(def);
|
|
404
|
+
sourceLabel = `workspace ${opts.fromWorkspace}`;
|
|
405
|
+
}
|
|
406
|
+
else if (opts.fromProject) {
|
|
407
|
+
let suiteConstituents = [];
|
|
408
|
+
try {
|
|
409
|
+
const suite = await fetchProjectAsSuiteTemplate(opts.fromProject, opts);
|
|
410
|
+
def = suite.definition;
|
|
411
|
+
suiteConstituents = suite.constituents;
|
|
412
|
+
}
|
|
413
|
+
catch (e) {
|
|
414
|
+
renderHubError(e);
|
|
415
|
+
process.exit(1);
|
|
416
|
+
}
|
|
417
|
+
dropWarnings = exporterDropWarnings();
|
|
418
|
+
lossyLabel = "project suite";
|
|
419
|
+
yamlForValidate = packageDefinitionToYaml(def);
|
|
420
|
+
sourceLabel = `project ${opts.fromProject}`;
|
|
421
|
+
// Publish FULL constituent workspace packages FIRST so suite `require`
|
|
422
|
+
// deps resolve on install (otherwise hollow required-absent).
|
|
423
|
+
if (suiteConstituents.length > 0 && !opts.json) {
|
|
424
|
+
log.info(`Publishing ${suiteConstituents.length} constituent workspace package(s) before the suite…`);
|
|
425
|
+
}
|
|
426
|
+
for (const constituent of suiteConstituents) {
|
|
427
|
+
const cSlug = constituent._meta?.slug;
|
|
428
|
+
if (!cSlug) {
|
|
429
|
+
log.warn("Skipping constituent without _meta.slug");
|
|
430
|
+
continue;
|
|
431
|
+
}
|
|
432
|
+
const cYaml = packageDefinitionToYaml(constituent);
|
|
433
|
+
const cVal = validateTemplateYaml(cYaml);
|
|
434
|
+
if (!cVal.ok) {
|
|
435
|
+
log.error(`Constituent ${cSlug} failed validation — not published:`);
|
|
436
|
+
printValidationErrors(cVal.errors);
|
|
437
|
+
process.exit(1);
|
|
438
|
+
}
|
|
439
|
+
try {
|
|
440
|
+
const r = await publishPackage(constituent, {
|
|
441
|
+
isPublic,
|
|
442
|
+
...(pricing ?? {}),
|
|
443
|
+
});
|
|
444
|
+
if (!opts.json)
|
|
445
|
+
reportPublish(r);
|
|
446
|
+
}
|
|
447
|
+
catch (e) {
|
|
448
|
+
if (e instanceof CpWriteError) {
|
|
449
|
+
reportCpWriteError(e, cSlug);
|
|
450
|
+
process.exit(1);
|
|
451
|
+
}
|
|
452
|
+
throw e;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
else {
|
|
457
|
+
if (!file) {
|
|
458
|
+
log.error("Provide a template file, --from-workspace <id>, or --from-project <id>.");
|
|
459
|
+
process.exit(1);
|
|
460
|
+
}
|
|
461
|
+
try {
|
|
462
|
+
const tpl = parseTemplateFile(file);
|
|
463
|
+
yamlForValidate = tpl;
|
|
464
|
+
def = templateToPackageDefinition(tpl);
|
|
465
|
+
}
|
|
466
|
+
catch (e) {
|
|
467
|
+
log.error(e.message);
|
|
468
|
+
process.exit(1);
|
|
469
|
+
}
|
|
470
|
+
sourceLabel = file;
|
|
471
|
+
}
|
|
472
|
+
// 2. Validate BEFORE any publish network call (the fast author-feedback gate).
|
|
473
|
+
const result = validateTemplateYaml(yamlForValidate);
|
|
474
|
+
if (!result.ok) {
|
|
475
|
+
if (opts.json) {
|
|
476
|
+
console.log(JSON.stringify({ ok: false, stage: "validate", errors: result.errors }, null, 2));
|
|
477
|
+
}
|
|
478
|
+
else {
|
|
479
|
+
log.error(`${sourceLabel} failed validation — not published:`);
|
|
480
|
+
printValidationErrors(result.errors);
|
|
481
|
+
}
|
|
482
|
+
process.exit(1);
|
|
483
|
+
}
|
|
484
|
+
// 2b. Say what this door does NOT carry — BEFORE the publish, not after, so
|
|
485
|
+
// the author can still stop. Printed as a warning, never as an error: the
|
|
486
|
+
// export is not wrong, it is incomplete, and the package still installs.
|
|
487
|
+
if (dropWarnings.length > 0 && !opts.json) {
|
|
488
|
+
log.warn(`Serialising a live ${lossyLabel} is a LOSSY projection — these are NOT in the package:`);
|
|
489
|
+
for (const w of dropWarnings)
|
|
490
|
+
log.hint(`• ${w}`);
|
|
491
|
+
log.hint("See TEMPLATE-DEV-GUIDE.md — `template ≡ installed` holds publish→install, not workspace→publish.");
|
|
492
|
+
if (opts.fromProject) {
|
|
493
|
+
log.hint("Constituent workspace packages were published first (when present); the suite only requires them by slug.");
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
if (pricing && !opts.json) {
|
|
497
|
+
log.info(`Pricing stamped: one_time @ $${(pricing.priceUsd / 100).toFixed(2)} (settlement/Stripe is not this wave).`);
|
|
498
|
+
}
|
|
499
|
+
// 3. Publish.
|
|
500
|
+
const slug = def._meta?.slug;
|
|
501
|
+
try {
|
|
502
|
+
const r = await publishPackage(def, {
|
|
503
|
+
isPublic,
|
|
504
|
+
...(pricing ?? {}),
|
|
505
|
+
});
|
|
506
|
+
if (opts.json) {
|
|
507
|
+
console.log(JSON.stringify({
|
|
508
|
+
ok: true,
|
|
509
|
+
warnings: dropWarnings,
|
|
510
|
+
...(pricing
|
|
511
|
+
? {
|
|
512
|
+
pricingModel: pricing.pricingModel,
|
|
513
|
+
priceUsd: pricing.priceUsd,
|
|
514
|
+
settlement: "not-this-wave",
|
|
515
|
+
}
|
|
516
|
+
: {}),
|
|
517
|
+
...r,
|
|
518
|
+
}, null, 2));
|
|
519
|
+
return;
|
|
520
|
+
}
|
|
521
|
+
reportPublish(r);
|
|
522
|
+
}
|
|
523
|
+
catch (e) {
|
|
524
|
+
if (e instanceof CpWriteError) {
|
|
525
|
+
if (opts.json) {
|
|
526
|
+
console.log(JSON.stringify({ ok: false, stage: "publish", status: e.status, error: e.serverMessage, slug }, null, 2));
|
|
527
|
+
}
|
|
528
|
+
else {
|
|
529
|
+
reportCpWriteError(e, slug);
|
|
530
|
+
}
|
|
531
|
+
process.exit(1);
|
|
532
|
+
}
|
|
533
|
+
log.error(`Publish failed: ${e.message}`);
|
|
534
|
+
process.exit(1);
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
// ─── unpublish ───────────────────────────────────────────────────────────────
|
|
538
|
+
export async function marketUnpublish(slug, opts) {
|
|
539
|
+
try {
|
|
540
|
+
const r = await unpublishPackage(slug);
|
|
541
|
+
if (opts.json) {
|
|
542
|
+
console.log(JSON.stringify({ ok: true, ...r }, null, 2));
|
|
543
|
+
return;
|
|
544
|
+
}
|
|
545
|
+
log.success(`${chalk.bold(slug)} is now ${r.isPublic ? "public" : "private"}.`);
|
|
546
|
+
}
|
|
547
|
+
catch (e) {
|
|
548
|
+
if (e instanceof CpWriteError) {
|
|
549
|
+
if (opts.json) {
|
|
550
|
+
console.log(JSON.stringify({ ok: false, status: e.status, error: e.serverMessage, slug }, null, 2));
|
|
551
|
+
}
|
|
552
|
+
else {
|
|
553
|
+
log.error(`Unpublish failed${e.status ? ` (HTTP ${e.status})` : ""}: ${e.serverMessage}`);
|
|
554
|
+
// The CP PATCH door does not yet accept `isPublic` (only `podId`) — say so
|
|
555
|
+
// rather than leaving a bare validation error.
|
|
556
|
+
if (e.status === 400) {
|
|
557
|
+
log.hint("The control-plane PATCH door needs `isPublic` added to its allow-list (TODO cp).");
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
process.exit(1);
|
|
561
|
+
}
|
|
562
|
+
log.error(`Unpublish failed: ${e.message}`);
|
|
563
|
+
process.exit(1);
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
//# sourceMappingURL=market-authoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market-authoring.js","sourceRoot":"","sources":["../../src/commands/market-authoring.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `synap market publish --official [slug...]` — the founder's command for
|
|
3
|
+
* publishing the official Synap template catalog.
|
|
4
|
+
* ==========================================================================
|
|
5
|
+
*
|
|
6
|
+
* An ALIAS, not an implementation: it is exactly
|
|
7
|
+
* `synap catalog publish --official --kind workspace [slug...]` — the ONE code
|
|
8
|
+
* path in `catalog.ts` (`runCatalog`), which dynamic-imports the ONE catalog lib
|
|
9
|
+
* (`scripts/catalog-lib.mjs`) from the monorepo checkout. All the safety lives
|
|
10
|
+
* there: validate → diff preview → confirm (`--dry-run` previews only, `--yes`
|
|
11
|
+
* skips the question, non-interactive without `--yes` refuses), founder-only
|
|
12
|
+
* `synap-official` preflight in the lib, `synap login` CP session as the
|
|
13
|
+
* credential.
|
|
14
|
+
*
|
|
15
|
+
* What stays here is only what is specific to the `market publish` spelling:
|
|
16
|
+
* the flags `market publish` carries for its NON-official mode (a file,
|
|
17
|
+
* `--from-workspace`, visibility, price) are usage errors next to `--official`.
|
|
18
|
+
*/
|
|
19
|
+
import { findCatalogDir, looksLikeFile, type CatalogDeps } from "./catalog.js";
|
|
20
|
+
export { looksLikeFile };
|
|
21
|
+
export interface OfficialPublishOpts {
|
|
22
|
+
official?: boolean;
|
|
23
|
+
templatesDir?: string;
|
|
24
|
+
dryRun?: boolean;
|
|
25
|
+
yes?: boolean;
|
|
26
|
+
json?: boolean;
|
|
27
|
+
public?: boolean;
|
|
28
|
+
private?: boolean;
|
|
29
|
+
price?: string;
|
|
30
|
+
fromWorkspace?: string;
|
|
31
|
+
fromProject?: string;
|
|
32
|
+
}
|
|
33
|
+
/** Seams for tests — the catalog command's own seams (one implementation). */
|
|
34
|
+
export type OfficialPublishDeps = CatalogDeps;
|
|
35
|
+
/** Kept for callers of the old name: the catalog package dir of the checkout. */
|
|
36
|
+
export declare const findTemplatesDir: typeof findCatalogDir;
|
|
37
|
+
/**
|
|
38
|
+
* `--official` publishes the checkout's corpus, so every flag that names some
|
|
39
|
+
* OTHER source or overrides what the template itself declares is a usage error —
|
|
40
|
+
* silently ignoring it would publish something other than what was typed.
|
|
41
|
+
* Returns the message, or null when the combination is valid.
|
|
42
|
+
*/
|
|
43
|
+
export declare function officialUsageError(file: string | undefined, opts: OfficialPublishOpts): string | null;
|
|
44
|
+
/**
|
|
45
|
+
* Returns the process exit code (0 ok · 1 refused/failed · 2 usage). The alias:
|
|
46
|
+
* `market`-only usage checks, then `runCatalog("publish", …, kind workspace)`.
|
|
47
|
+
*/
|
|
48
|
+
export declare function marketPublishOfficial(slugs: string[], opts: OfficialPublishOpts, deps?: OfficialPublishDeps): Promise<number>;
|
|
49
|
+
/**
|
|
50
|
+
* The flags that only mean something WITH `--official`, and the one-file rule
|
|
51
|
+
* of a regular publish. Without this a stray `--dry-run` on a regular publish
|
|
52
|
+
* would be silently ignored and the package published for real.
|
|
53
|
+
*/
|
|
54
|
+
export declare function nonOfficialUsageError(targets: string[], opts: {
|
|
55
|
+
dryRun?: boolean;
|
|
56
|
+
yes?: boolean;
|
|
57
|
+
templatesDir?: string;
|
|
58
|
+
}): string | null;
|