@synap-core/cli 1.8.0 → 1.11.0
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/dist/commands/agent-chat.d.ts +47 -0
- package/dist/commands/agent-chat.js +250 -0
- package/dist/commands/agent-chat.js.map +1 -0
- package/dist/commands/agent-run.js +3 -4
- package/dist/commands/agent-run.js.map +1 -1
- package/dist/commands/agents.js +85 -46
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/automation.js +2 -1
- package/dist/commands/automation.js.map +1 -1
- package/dist/commands/bridge-setup.d.ts +66 -0
- package/dist/commands/bridge-setup.js +1112 -0
- package/dist/commands/bridge-setup.js.map +1 -0
- package/dist/commands/cap-connections.d.ts +28 -0
- package/dist/commands/cap-connections.js +224 -0
- package/dist/commands/cap-connections.js.map +1 -0
- package/dist/commands/capability.d.ts +89 -0
- package/dist/commands/capability.js +1594 -0
- package/dist/commands/capability.js.map +1 -0
- package/dist/commands/centrality.d.ts +20 -0
- package/dist/commands/centrality.js +95 -0
- package/dist/commands/centrality.js.map +1 -0
- package/dist/commands/connect.d.ts +2 -0
- package/dist/commands/connect.js +16 -35
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/context.js +6 -7
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/data-extra.d.ts +1 -0
- package/dist/commands/data-extra.js +41 -14
- package/dist/commands/data-extra.js.map +1 -1
- package/dist/commands/data.d.ts +4 -4
- package/dist/commands/data.js +254 -187
- package/dist/commands/data.js.map +1 -1
- package/dist/commands/diagnose.d.ts +20 -0
- package/dist/commands/diagnose.js +186 -0
- package/dist/commands/diagnose.js.map +1 -0
- package/dist/commands/digest.d.ts +17 -0
- package/dist/commands/digest.js +122 -0
- package/dist/commands/digest.js.map +1 -0
- package/dist/commands/discover.d.ts +2 -0
- package/dist/commands/discover.js +25 -8
- package/dist/commands/discover.js.map +1 -1
- package/dist/commands/doc.d.ts +14 -0
- package/dist/commands/doc.js +61 -4
- package/dist/commands/doc.js.map +1 -1
- package/dist/commands/doctor.d.ts +21 -0
- package/dist/commands/doctor.js +189 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/events.js +5 -2
- package/dist/commands/events.js.map +1 -1
- package/dist/commands/explain.d.ts +1 -1
- package/dist/commands/explain.js +18 -15
- package/dist/commands/explain.js.map +1 -1
- package/dist/commands/facet.d.ts +29 -0
- package/dist/commands/facet.js +113 -0
- package/dist/commands/facet.js.map +1 -0
- package/dist/commands/graph.js +7 -4
- package/dist/commands/graph.js.map +1 -1
- package/dist/commands/import.d.ts +38 -0
- package/dist/commands/import.js +471 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/init.js +35 -16
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/keys.js +3 -4
- package/dist/commands/keys.js.map +1 -1
- package/dist/commands/knowledge.d.ts +8 -0
- package/dist/commands/knowledge.js +308 -33
- package/dist/commands/knowledge.js.map +1 -1
- package/dist/commands/launch.d.ts +50 -0
- package/dist/commands/launch.js +790 -0
- package/dist/commands/launch.js.map +1 -0
- package/dist/commands/lens.d.ts +45 -0
- package/dist/commands/lens.js +386 -0
- package/dist/commands/lens.js.map +1 -0
- package/dist/commands/market-authoring.d.ts +45 -0
- package/dist/commands/market-authoring.js +225 -0
- package/dist/commands/market-authoring.js.map +1 -0
- package/dist/commands/market.d.ts +224 -0
- package/dist/commands/market.js +1643 -0
- package/dist/commands/market.js.map +1 -0
- package/dist/commands/mcp.d.ts +64 -0
- package/dist/commands/mcp.js +265 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/observe.js +14 -11
- package/dist/commands/observe.js.map +1 -1
- package/dist/commands/open.d.ts +21 -4
- package/dist/commands/open.js +45 -4
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/pod.d.ts +100 -0
- package/dist/commands/pod.js +359 -0
- package/dist/commands/pod.js.map +1 -0
- package/dist/commands/pods.d.ts +15 -0
- package/dist/commands/pods.js +233 -17
- package/dist/commands/pods.js.map +1 -1
- package/dist/commands/proposals-actions.js +43 -3
- package/dist/commands/proposals-actions.js.map +1 -1
- package/dist/commands/purge.d.ts +23 -0
- package/dist/commands/purge.js +148 -0
- package/dist/commands/purge.js.map +1 -0
- package/dist/commands/raycast.d.ts +15 -0
- package/dist/commands/raycast.js +153 -0
- package/dist/commands/raycast.js.map +1 -0
- package/dist/commands/sessions.js +47 -22
- package/dist/commands/sessions.js.map +1 -1
- package/dist/commands/skill-manage.d.ts +21 -0
- package/dist/commands/skill-manage.js +195 -0
- package/dist/commands/skill-manage.js.map +1 -0
- package/dist/commands/skills-commands.js +2 -1
- package/dist/commands/skills-commands.js.map +1 -1
- package/dist/commands/skills.js +7 -4
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/status.d.ts +3 -1
- package/dist/commands/status.js +166 -14
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/statusline.d.ts +24 -0
- package/dist/commands/statusline.js +450 -0
- package/dist/commands/statusline.js.map +1 -0
- package/dist/commands/subscribe.js +2 -2
- package/dist/commands/subscribe.js.map +1 -1
- package/dist/commands/template.d.ts +42 -0
- package/dist/commands/template.js +191 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/tools.d.ts +30 -0
- package/dist/commands/tools.js +315 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/commands/upload.d.ts +30 -0
- package/dist/commands/upload.js +155 -0
- package/dist/commands/upload.js.map +1 -0
- package/dist/commands/versions.d.ts +27 -0
- package/dist/commands/versions.js +277 -0
- package/dist/commands/versions.js.map +1 -0
- package/dist/commands/view.js +3 -2
- package/dist/commands/view.js.map +1 -1
- package/dist/commands/whoami.d.ts +21 -0
- package/dist/commands/whoami.js +129 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/index.js +894 -60
- package/dist/index.js.map +1 -1
- package/dist/lib/approval-poll.d.ts +42 -0
- package/dist/lib/approval-poll.js +52 -0
- package/dist/lib/approval-poll.js.map +1 -0
- package/dist/lib/auth.d.ts +29 -6
- package/dist/lib/auth.js +105 -94
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/bundle-version.d.ts +11 -0
- package/dist/lib/bundle-version.js +33 -0
- package/dist/lib/bundle-version.js.map +1 -0
- package/dist/lib/capture-lane.d.ts +30 -12
- package/dist/lib/capture-lane.js +73 -14
- package/dist/lib/capture-lane.js.map +1 -1
- package/dist/lib/capture-structure.d.ts +123 -0
- package/dist/lib/capture-structure.js +57 -0
- package/dist/lib/capture-structure.js.map +1 -0
- package/dist/lib/cp-packages.d.ts +177 -0
- package/dist/lib/cp-packages.js +389 -0
- package/dist/lib/cp-packages.js.map +1 -0
- package/dist/lib/describe-lens.d.ts +46 -0
- package/dist/lib/describe-lens.js +33 -0
- package/dist/lib/describe-lens.js.map +1 -0
- package/dist/lib/hub-client.d.ts +91 -1
- package/dist/lib/hub-client.js +565 -22
- 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/installed.d.ts +51 -0
- package/dist/lib/installed.js +70 -0
- package/dist/lib/installed.js.map +1 -0
- package/dist/lib/next-steps.d.ts +61 -0
- package/dist/lib/next-steps.js +146 -0
- package/dist/lib/next-steps.js.map +1 -0
- package/dist/lib/pod.d.ts +144 -22
- package/dist/lib/pod.js +302 -64
- package/dist/lib/pod.js.map +1 -1
- package/dist/lib/project-ref.d.ts +95 -0
- package/dist/lib/project-ref.js +144 -0
- package/dist/lib/project-ref.js.map +1 -0
- package/dist/lib/project.d.ts +35 -0
- package/dist/lib/project.js +39 -0
- package/dist/lib/project.js.map +1 -0
- package/dist/lib/session-lens.d.ts +33 -0
- package/dist/lib/session-lens.js +76 -0
- package/dist/lib/session-lens.js.map +1 -0
- package/dist/lib/skill-import.d.ts +40 -0
- package/dist/lib/skill-import.js +203 -0
- package/dist/lib/skill-import.js.map +1 -0
- package/dist/lib/skills-installer.d.ts +17 -6
- package/dist/lib/skills-installer.js +133 -19
- package/dist/lib/skills-installer.js.map +1 -1
- package/dist/lib/suite.d.ts +28 -0
- package/dist/lib/suite.js +29 -0
- package/dist/lib/suite.js.map +1 -0
- package/dist/lib/superwhisper-import.d.ts +40 -0
- package/dist/lib/superwhisper-import.js +389 -0
- package/dist/lib/superwhisper-import.js.map +1 -0
- package/dist/lib/targets.d.ts +49 -1
- package/dist/lib/targets.js +420 -288
- package/dist/lib/targets.js.map +1 -1
- package/dist/lib/template-file.d.ts +74 -0
- package/dist/lib/template-file.js +140 -0
- package/dist/lib/template-file.js.map +1 -0
- package/dist/lib/unwrapList.d.ts +1 -0
- package/dist/lib/unwrapList.js +20 -0
- package/dist/lib/unwrapList.js.map +1 -0
- package/dist/utils/logger.d.ts +2 -0
- package/dist/utils/logger.js +10 -2
- package/dist/utils/logger.js.map +1 -1
- package/node_modules/@synap/hub-rest-client/dist/index.cjs +414 -34
- package/node_modules/@synap/hub-rest-client/dist/index.d.cts +762 -22
- package/node_modules/@synap/hub-rest-client/dist/index.d.ts +762 -22
- package/node_modules/@synap/hub-rest-client/dist/index.js +414 -34
- package/node_modules/@synap/hub-rest-client/package.json +1 -1
- package/node_modules/@synap/hub-rest-client/src/client.ts +525 -37
- package/node_modules/@synap/hub-rest-client/src/index.ts +42 -0
- package/node_modules/@synap/hub-rest-client/src/setup.ts +57 -1
- package/node_modules/@synap/hub-rest-client/src/types.ts +697 -37
- package/package.json +11 -5
- package/skills/agent-os/SKILL.md +218 -0
- package/skills/manifest.json +5 -0
- package/skills/onboard/SKILL.md +193 -0
- package/skills/synap/SKILL.md +1284 -58
- package/skills/synap/_order.txt +37 -0
- package/skills/synap/_skill.yaml +24 -0
- package/skills/synap/authentication.md +10 -0
- package/skills/synap/automations.md +264 -0
- package/skills/synap/capabilities.md +107 -0
- package/skills/synap/capture.md +50 -142
- package/skills/synap/cli-operations.md +107 -0
- package/skills/synap/common-mistakes.md +13 -0
- package/skills/synap/content-os.md +83 -0
- package/skills/synap/creative-loop.md +43 -0
- package/skills/synap/crm.md +117 -0
- package/skills/synap/diagnostics.md +35 -0
- package/skills/synap/digesting-a-channel.md +63 -0
- package/skills/synap/document-embeds.md +123 -0
- package/skills/synap/escalation-ladder.md +71 -0
- package/skills/synap/focus-sessions.md +47 -0
- package/skills/synap/governance-rules.md +64 -0
- package/skills/synap/governance.md +6 -6
- package/skills/synap/graph-gardening.md +21 -0
- package/skills/synap/inline-patterns.md +38 -0
- package/skills/synap/lenses.md +38 -0
- package/skills/synap/linking-principle.md +39 -0
- package/skills/synap/linking.md +1 -0
- package/skills/synap/mental-model.md +45 -0
- package/skills/synap/more.md +7 -0
- package/skills/synap/multi-entity-capture.md +12 -0
- package/skills/synap/next-action.md +37 -0
- package/skills/synap/north-star.md +17 -0
- package/skills/synap/operating-mode-rules.md +45 -0
- package/skills/synap/operating-mode.md +9 -0
- package/skills/synap/quick-reference.md +67 -0
- package/skills/synap/reading.md +43 -0
- package/skills/synap/recap.md +21 -0
- package/skills/synap/reflexes.md +46 -0
- package/skills/synap/response-style.md +21 -0
- package/skills/synap/scope.md +13 -0
- package/skills/synap/showing.md +17 -0
- package/skills/synap/user-model.md +25 -0
- package/skills/synap/viewframe-cells.md +290 -0
- package/skills/synap/work-flow.md +113 -0
- package/skills/synap/worked-examples.md +74 -0
- package/skills/synap/workspace-design.md +45 -0
- package/skills/synap/workspace-edges.md +49 -0
- package/skills/synap/writes.md +213 -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-market/SKILL.md +335 -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 +75 -0
- package/skills/synap-market/discover-and-fetch.md +59 -0
- package/skills/synap-market/governance-and-catalog.md +56 -0
- package/skills/synap-market/install.md +55 -0
- package/skills/synap-market/overview.md +51 -0
- package/skills/synap-schema/SKILL.md +97 -6
- package/skills/synap-schema/_order.txt +13 -0
- package/skills/synap-schema/_skill.yaml +22 -0
- package/skills/synap-schema/before-you-touch.md +14 -0
- package/skills/synap-schema/common-mistakes.md +9 -0
- package/skills/synap-schema/creating-profiles.md +17 -0
- package/skills/synap-schema/discover-profiles.md +24 -0
- package/skills/synap-schema/entity-scope.md +8 -0
- package/skills/synap-schema/extend-vs-create.md +31 -0
- package/skills/synap-schema/more.md +6 -0
- package/skills/synap-schema/overlay-properties.md +22 -0
- package/skills/synap-schema/profiles.md +3 -0
- package/skills/synap-schema/property-defs.md +29 -0
- package/skills/synap-schema/read-before-write.md +50 -0
- package/skills/synap-schema/relations.md +18 -0
- package/skills/synap-schema/worked-example.md +30 -0
- package/skills/synap-ui/SKILL.md +26 -2
- package/skills/synap-ui/_order.txt +13 -0
- package/skills/synap-ui/_skill.yaml +23 -0
- package/skills/synap-ui/ai-companion.md +27 -0
- package/skills/synap-ui/arranging-bento.md +8 -0
- package/skills/synap-ui/before-you-build.md +20 -0
- package/skills/synap-ui/bento-layouts.md +35 -0
- package/skills/synap-ui/common-mistakes.md +10 -0
- package/skills/synap-ui/creating-views.md +26 -0
- package/skills/synap-ui/four-builds.md +24 -0
- package/skills/synap-ui/more.md +7 -0
- package/skills/synap-ui/proposing-vs-extending.md +11 -0
- package/skills/synap-ui/view-list.md +24 -0
- package/skills/synap-ui/views.md +3 -0
- package/skills/synap-ui/worked-example.md +18 -0
- package/skills/synap-ui/workspaces.md +47 -0
- package/templates/automations/bookmark-enrichment.automation.json +44 -0
- package/templates/automations/mail-feed.automation.json +86 -0
- package/templates/automations/url-bookmark-capture.automation.json +70 -0
- package/templates/skills/README.md +21 -0
- package/templates/skills/authoring-automations/SKILL.md +95 -0
- package/templates/skills/authoring-automations/reference/node-matrix.md +49 -0
- package/templates/skills/authoring-capabilities/SKILL.md +93 -0
- package/templates/skills/authoring-capabilities/reference/template-anatomy.md +70 -0
- package/templates/skills/authoring-playbooks/SKILL.md +102 -0
- package/templates/skills/authoring-playbooks/reference/stages-contract.md +35 -0
- package/templates/skills/authoring-playbooks/reference/worked-example.md +64 -0
- package/templates/skills/bookmark-enrichment/SKILL.md +40 -0
- package/templates/skills/coordinating-agents/SKILL.md +32 -0
- package/templates/skills/coordinating-branches/SKILL.md +27 -0
- package/templates/skills/mapping-the-server/SKILL.md +54 -0
- package/templates/skills/reading-client-progress/SKILL.md +65 -0
- package/templates/skills/routing-to-channels/SKILL.md +54 -0
- package/templates/skills/stellar-scf-grants-advisor/ASSOCIATE-CHEATSHEET.md +133 -0
- package/templates/skills/stellar-scf-grants-advisor/ASSOCIATE-ONBOARDING-GUIDE.md +761 -0
- package/templates/skills/stellar-scf-grants-advisor/CLIENT-FAQ.md +181 -0
- package/templates/skills/stellar-scf-grants-advisor/PARTNER-HANDOVER.md +130 -0
- package/templates/skills/stellar-scf-grants-advisor/SKILL.md +102 -0
- package/templates/skills/stellar-scf-grants-advisor/examples/README.md +43 -0
- package/templates/skills/stellar-scf-grants-advisor/examples/chat-summary-templates.md +158 -0
- package/templates/skills/stellar-scf-grants-advisor/examples/corpus-comparable-rows.md +136 -0
- package/templates/skills/stellar-scf-grants-advisor/examples/q10-team-rewrites.md +109 -0
- package/templates/skills/stellar-scf-grants-advisor/examples/q2-description-rewrites.md +88 -0
- package/templates/skills/stellar-scf-grants-advisor/examples/q6-integration-rewrites.md +107 -0
- package/templates/skills/stellar-scf-grants-advisor/examples/tranche-structures.md +176 -0
- package/templates/skills/stellar-scf-grants-advisor/reference/01-methodology.md +96 -0
- package/templates/skills/stellar-scf-grants-advisor/reference/02-scoring-framework.md +199 -0
- package/templates/skills/stellar-scf-grants-advisor/reference/03-rejection-patterns.md +241 -0
- package/templates/skills/stellar-scf-grants-advisor/reference/04-winner-patterns.md +120 -0
- package/templates/skills/stellar-scf-grants-advisor/reference/05-comeback-patterns.md +92 -0
- package/templates/skills/stellar-scf-grants-advisor/reference/06-budget-benchmarks.md +125 -0
- package/templates/skills/stellar-scf-grants-advisor/reference/07-integration-list.md +147 -0
- package/templates/skills/stellar-scf-grants-advisor/reference/08-abstract-fields.md +258 -0
- package/templates/skills/stellar-scf-grants-advisor/reference/09-build-fields.md +259 -0
- package/templates/skills/stellar-scf-grants-advisor/reference/10-corpus-winners.md +135 -0
- package/templates/skills/stellar-scf-grants-advisor/reference/11-corpus-rejects.md +267 -0
- package/templates/skills/stellar-scf-grants-advisor/reference/12-client-communication.md +131 -0
- package/templates/skills/stellar-scf-grants-advisor/reference/13-excel-output-spec.md +199 -0
- package/templates/skills/stellar-scf-grants-advisor/reference/14-worked-examples.md +160 -0
- package/templates/skills/stellar-scf-grants-advisor/templates/abstract-review-builder.py +253 -0
- package/templates/skills/stellar-scf-grants-advisor/templates/build-review-builder.py +213 -0
- package/dist/commands/connectors.d.ts +0 -31
- package/dist/commands/connectors.js +0 -276
- package/dist/commands/connectors.js.map +0 -1
- package/dist/commands/finish.d.ts +0 -25
- package/dist/commands/finish.js +0 -274
- package/dist/commands/finish.js.map +0 -1
- package/dist/commands/openclaw.d.ts +0 -40
- package/dist/commands/openclaw.js +0 -1148
- package/dist/commands/openclaw.js.map +0 -1
- package/dist/commands/security-audit.d.ts +0 -12
- package/dist/commands/security-audit.js +0 -100
- package/dist/commands/security-audit.js.map +0 -1
- package/dist/lib/hardening.d.ts +0 -18
- package/dist/lib/hardening.js +0 -214
- package/dist/lib/hardening.js.map +0 -1
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* synap upload
|
|
3
|
+
*
|
|
4
|
+
* Store a real file (arbitrary bytes) on the pod. Closes the "an AI/CLI cannot
|
|
5
|
+
* store a real file" gap: the CLI reads the file from disk and POSTs it as
|
|
6
|
+
* multipart/form-data to the standalone file door, which mints a `file`
|
|
7
|
+
* entity for the bytes.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* synap upload ./report.pdf
|
|
11
|
+
* synap upload ./logo.png --title "Brand logo" --workspace <id>
|
|
12
|
+
* synap upload ./spec.pdf --attach <entityId> # also link doc → entity
|
|
13
|
+
*
|
|
14
|
+
* API:
|
|
15
|
+
* POST /api/hub/files (multipart) — field `file` (≤10MB) + REQUIRED
|
|
16
|
+
* workspaceId (membership-gated) +
|
|
17
|
+
* optional title → { fileEntityId, documentId }
|
|
18
|
+
* POST /api/hub/relations — with --attach: `references` relation
|
|
19
|
+
* from the target entity to the new doc.
|
|
20
|
+
*/
|
|
21
|
+
import { readFileSync } from "fs";
|
|
22
|
+
import { basename, extname } from "path";
|
|
23
|
+
import { log } from "../utils/logger.js";
|
|
24
|
+
import { resolveHubConfig, resolveUserId, hubPostMultipart, renderHubError, } from "../lib/hub-client.js";
|
|
25
|
+
import { writeGovernance } from "../lib/capture-lane.js";
|
|
26
|
+
import { createRelation } from "./data.js";
|
|
27
|
+
import { openInBrowser } from "./open.js";
|
|
28
|
+
/** Mirror of the pinned /api/hub/files contract: reject >10MB before the round-trip. */
|
|
29
|
+
const MAX_UPLOAD_BYTES = 10 * 1024 * 1024;
|
|
30
|
+
/** Best-effort extension → mime. Backend accepts arbitrary mime; octet-stream is the safe default. */
|
|
31
|
+
const MIME = {
|
|
32
|
+
".md": "text/markdown",
|
|
33
|
+
".markdown": "text/markdown",
|
|
34
|
+
".txt": "text/plain",
|
|
35
|
+
".csv": "text/csv",
|
|
36
|
+
".json": "application/json",
|
|
37
|
+
".html": "text/html",
|
|
38
|
+
".htm": "text/html",
|
|
39
|
+
".pdf": "application/pdf",
|
|
40
|
+
".doc": "application/msword",
|
|
41
|
+
".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
42
|
+
".png": "image/png",
|
|
43
|
+
".jpg": "image/jpeg",
|
|
44
|
+
".jpeg": "image/jpeg",
|
|
45
|
+
".webp": "image/webp",
|
|
46
|
+
".gif": "image/gif",
|
|
47
|
+
".svg": "image/svg+xml",
|
|
48
|
+
".mp3": "audio/mpeg",
|
|
49
|
+
".wav": "audio/wav",
|
|
50
|
+
".m4a": "audio/mp4",
|
|
51
|
+
".ogg": "audio/ogg",
|
|
52
|
+
".mp4": "video/mp4",
|
|
53
|
+
".mov": "video/quicktime",
|
|
54
|
+
".zip": "application/zip",
|
|
55
|
+
};
|
|
56
|
+
function mimeFor(path) {
|
|
57
|
+
return MIME[extname(path).toLowerCase()] ?? "application/octet-stream";
|
|
58
|
+
}
|
|
59
|
+
export async function uploadFile(path, opts) {
|
|
60
|
+
try {
|
|
61
|
+
const cfg = await resolveHubConfig(opts);
|
|
62
|
+
// Fail-fast identity check: assert the caller has a resolvable identity before
|
|
63
|
+
// uploading. The /files door derives the owner from the API key, not a body
|
|
64
|
+
// field, so the resolved id is intentionally not forwarded (unlike doc create).
|
|
65
|
+
await resolveUserId(cfg);
|
|
66
|
+
const workspaceId = opts.workspace ?? cfg.workspaceId;
|
|
67
|
+
// Buffer<ArrayBuffer> (not the widened Buffer<ArrayBufferLike>) — required for
|
|
68
|
+
// File([buf]) to typecheck, matching readFileSync's inferred NonSharedBuffer.
|
|
69
|
+
let buf;
|
|
70
|
+
try {
|
|
71
|
+
buf = readFileSync(path);
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
log.error(`Cannot read file: ${path} — ${e.message}`);
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
if (buf.byteLength === 0) {
|
|
78
|
+
log.error(`File is empty: ${path}`);
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
if (buf.byteLength > MAX_UPLOAD_BYTES) {
|
|
82
|
+
log.error(`File too large: ${(buf.byteLength / 1024 / 1024).toFixed(1)}MB — the pod accepts up to 10MB.`);
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
const filename = basename(path);
|
|
86
|
+
const form = new FormData();
|
|
87
|
+
// Field name + optional fields per the pinned /api/hub/files contract.
|
|
88
|
+
form.append("file", new File([buf], filename, { type: mimeFor(path) }));
|
|
89
|
+
if (workspaceId)
|
|
90
|
+
form.append("workspaceId", workspaceId);
|
|
91
|
+
if (opts.title)
|
|
92
|
+
form.append("title", opts.title);
|
|
93
|
+
const res = (await hubPostMultipart("/files", form, cfg));
|
|
94
|
+
const governance = writeGovernance(res);
|
|
95
|
+
const fileEntityId = String(res.fileEntityId ?? "");
|
|
96
|
+
const documentId = String(res.documentId ?? "");
|
|
97
|
+
// Single --attach implementation for both output modes: a `references` relation
|
|
98
|
+
// links ENTITIES — target the new file entity (fileEntityId), never the
|
|
99
|
+
// documents-row id (documentId). Callers guard on opts.attach + fileEntityId first.
|
|
100
|
+
const doAttach = (json) => createRelation({
|
|
101
|
+
source: opts.attach,
|
|
102
|
+
target: fileEntityId,
|
|
103
|
+
type: "references",
|
|
104
|
+
workspace: workspaceId,
|
|
105
|
+
json,
|
|
106
|
+
podUrl: opts.podUrl,
|
|
107
|
+
apiKey: opts.apiKey,
|
|
108
|
+
});
|
|
109
|
+
if (opts.json) {
|
|
110
|
+
console.log(JSON.stringify({ ...res, outcome: governance === "proposed" ? "proposed" : "stored" }, null, 2));
|
|
111
|
+
// In JSON mode we still run the attach so its response is emitted too.
|
|
112
|
+
if (governance !== "proposed" && opts.attach && fileEntityId) {
|
|
113
|
+
await doAttach(true);
|
|
114
|
+
}
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
if (governance === "proposed") {
|
|
118
|
+
// A proposal is normal — the write is queued for the user's review, not a failure.
|
|
119
|
+
log.info(`Upload: ${filename} — proposed (under review)`);
|
|
120
|
+
const proposalId = String(res.proposalId ?? "");
|
|
121
|
+
if (proposalId)
|
|
122
|
+
log.dim(` proposal: ${proposalId}`);
|
|
123
|
+
if (res.reviewUrl)
|
|
124
|
+
log.dim(` review: ${String(res.reviewUrl)}`);
|
|
125
|
+
if (opts.attach) {
|
|
126
|
+
log.dim(" --attach skipped: the file entity is created on approval; re-run attach after the proposal lands.");
|
|
127
|
+
}
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
log.success(`Uploaded: ${filename}`);
|
|
131
|
+
if (fileEntityId)
|
|
132
|
+
log.dim(` fileEntityId: ${fileEntityId}`);
|
|
133
|
+
if (documentId)
|
|
134
|
+
log.dim(` documentId: ${documentId}`);
|
|
135
|
+
if (opts.attach) {
|
|
136
|
+
if (!fileEntityId) {
|
|
137
|
+
log.error("Uploaded, but the door returned no fileEntityId — cannot create the --attach relation.");
|
|
138
|
+
process.exit(1);
|
|
139
|
+
}
|
|
140
|
+
await doAttach(Boolean(opts.json));
|
|
141
|
+
}
|
|
142
|
+
// Open the new file ENTITY (fileEntityId), not the documents-row id.
|
|
143
|
+
// `kind: "document"` is a different, content-layer deep link (it opens the
|
|
144
|
+
// html-doc cell keyed by a `documents`-table row id) — fileEntityId lives in
|
|
145
|
+
// `entities`, so this must dispatch as `kind: "entity"`, not `"document"`.
|
|
146
|
+
if (opts.open && fileEntityId) {
|
|
147
|
+
await openInBrowser({ kind: "entity", id: fileEntityId });
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch (e) {
|
|
151
|
+
renderHubError(e);
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/commands/upload.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* synap versions
|
|
3
|
+
* ===============
|
|
4
|
+
*
|
|
5
|
+
* Answers "what version of each Synap artifact is LOCAL vs NPM vs
|
|
6
|
+
* CONTROL-PLANE vs POD" in one glance — the question `market update` can't
|
|
7
|
+
* answer because it only looks at what's already installed on the active pod,
|
|
8
|
+
* not whether the CP itself is seeded from a stale npm version. That gap is
|
|
9
|
+
* exactly how a publish can silently fail to propagate (e.g. templates
|
|
10
|
+
* published to npm 0.6.4 while the CP is still seeded from 0.5.0).
|
|
11
|
+
*
|
|
12
|
+
* READ-ONLY: every network call here is a GET (or `npm view`, which never
|
|
13
|
+
* mutates the registry). No pod/CP mutation, no writes anywhere.
|
|
14
|
+
*
|
|
15
|
+
* Reuses rather than re-derives:
|
|
16
|
+
* - `bundledTemplatesVersion()` (lib/bundle-version.ts) for the LOCAL
|
|
17
|
+
* workspace-templates version.
|
|
18
|
+
* - `fetchInstalledTemplates()` (lib/installed.ts) for the POD stamp summary.
|
|
19
|
+
* - `computeTemplateUpdates`/`isHashVersion` (@synap-core/workspace-templates)
|
|
20
|
+
* for the actual semver comparison — the same comparator `market update`
|
|
21
|
+
* already uses. Comparing two bare version strings is done by feeding them
|
|
22
|
+
* through that door via `compareVersions()` below rather than
|
|
23
|
+
* hand-rolling a second semver parser.
|
|
24
|
+
*/
|
|
25
|
+
export declare function versions(opts?: {
|
|
26
|
+
json?: boolean;
|
|
27
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* synap versions
|
|
3
|
+
* ===============
|
|
4
|
+
*
|
|
5
|
+
* Answers "what version of each Synap artifact is LOCAL vs NPM vs
|
|
6
|
+
* CONTROL-PLANE vs POD" in one glance — the question `market update` can't
|
|
7
|
+
* answer because it only looks at what's already installed on the active pod,
|
|
8
|
+
* not whether the CP itself is seeded from a stale npm version. That gap is
|
|
9
|
+
* exactly how a publish can silently fail to propagate (e.g. templates
|
|
10
|
+
* published to npm 0.6.4 while the CP is still seeded from 0.5.0).
|
|
11
|
+
*
|
|
12
|
+
* READ-ONLY: every network call here is a GET (or `npm view`, which never
|
|
13
|
+
* mutates the registry). No pod/CP mutation, no writes anywhere.
|
|
14
|
+
*
|
|
15
|
+
* Reuses rather than re-derives:
|
|
16
|
+
* - `bundledTemplatesVersion()` (lib/bundle-version.ts) for the LOCAL
|
|
17
|
+
* workspace-templates version.
|
|
18
|
+
* - `fetchInstalledTemplates()` (lib/installed.ts) for the POD stamp summary.
|
|
19
|
+
* - `computeTemplateUpdates`/`isHashVersion` (@synap-core/workspace-templates)
|
|
20
|
+
* for the actual semver comparison — the same comparator `market update`
|
|
21
|
+
* already uses. Comparing two bare version strings is done by feeding them
|
|
22
|
+
* through that door via `compareVersions()` below rather than
|
|
23
|
+
* hand-rolling a second semver parser.
|
|
24
|
+
*/
|
|
25
|
+
import { execSync } from "node:child_process";
|
|
26
|
+
import { createRequire } from "node:module";
|
|
27
|
+
import path from "node:path";
|
|
28
|
+
import fs from "node:fs";
|
|
29
|
+
import chalk from "chalk";
|
|
30
|
+
import { computeTemplateUpdates, isHashVersion, } from "@synap-core/workspace-templates";
|
|
31
|
+
import { log, banner } from "../utils/logger.js";
|
|
32
|
+
import { bundledTemplatesVersion } from "../lib/bundle-version.js";
|
|
33
|
+
import { fetchInstalledTemplates } from "../lib/installed.js";
|
|
34
|
+
import { getCpUrl } from "../lib/auth.js";
|
|
35
|
+
import { getActivePodConfig } from "../lib/pod.js";
|
|
36
|
+
const FETCH_TIMEOUT_MS = 8000;
|
|
37
|
+
// ── version lookups ─────────────────────────────────────────────────────────
|
|
38
|
+
/** `npm view <pkg> version` — spawned, tolerant of being offline/unpublished. */
|
|
39
|
+
function npmViewVersion(pkgName) {
|
|
40
|
+
try {
|
|
41
|
+
const out = execSync(`npm view ${pkgName} version`, {
|
|
42
|
+
encoding: "utf-8",
|
|
43
|
+
timeout: 10_000,
|
|
44
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
45
|
+
}).trim();
|
|
46
|
+
return out || undefined;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/** Best-effort resolve of an installed package's own version, mirroring `bundledTemplatesVersion()`'s walk-up-to-package.json approach for any package name. */
|
|
53
|
+
function resolvedLocalVersion(pkgName) {
|
|
54
|
+
try {
|
|
55
|
+
const req = createRequire(import.meta.url);
|
|
56
|
+
let dir = path.dirname(req.resolve(pkgName));
|
|
57
|
+
for (let i = 0; i < 6; i++) {
|
|
58
|
+
const pj = path.join(dir, "package.json");
|
|
59
|
+
if (fs.existsSync(pj)) {
|
|
60
|
+
const parsed = JSON.parse(fs.readFileSync(pj, "utf8"));
|
|
61
|
+
if (parsed.name === pkgName)
|
|
62
|
+
return parsed.version ?? undefined;
|
|
63
|
+
}
|
|
64
|
+
const parent = path.dirname(dir);
|
|
65
|
+
if (parent === dir)
|
|
66
|
+
break;
|
|
67
|
+
dir = parent;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
/* not resolvable from this CLI — expected for packages the CLI doesn't depend on */
|
|
72
|
+
}
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* GET {CP}/api/packages/:slug — the CP's own copy of a published package,
|
|
77
|
+
* whose `definition.sourcePackage.version` is the npm version the CP last
|
|
78
|
+
* seeded from (see `packages.ts` publish flow). Tries a short list of known
|
|
79
|
+
* bundled slugs so a CP with one renamed/missing package doesn't blank the
|
|
80
|
+
* whole row.
|
|
81
|
+
*/
|
|
82
|
+
async function fetchCpSeededVersion() {
|
|
83
|
+
const candidates = ["foundation", "ecosystem", "operations", "crm"];
|
|
84
|
+
for (const slug of candidates) {
|
|
85
|
+
try {
|
|
86
|
+
const res = await fetch(`${getCpUrl()}/api/packages/${encodeURIComponent(slug)}`, {
|
|
87
|
+
signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
|
|
88
|
+
});
|
|
89
|
+
if (!res.ok)
|
|
90
|
+
continue;
|
|
91
|
+
const data = (await res.json());
|
|
92
|
+
const version = data.package?.definition?.sourcePackage?.version;
|
|
93
|
+
if (version)
|
|
94
|
+
return { slug, version };
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
/* try next candidate */
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
/** GET {pod}/health — non-fatal on any failure (pod unreachable, older build). */
|
|
103
|
+
async function fetchPodHealth(podUrl) {
|
|
104
|
+
try {
|
|
105
|
+
const res = await fetch(`${podUrl}/health`, { signal: AbortSignal.timeout(FETCH_TIMEOUT_MS) });
|
|
106
|
+
if (!res.ok)
|
|
107
|
+
return undefined;
|
|
108
|
+
return (await res.json());
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return undefined;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/** GET {CP}/api/marketplace/capabilities — public, no auth. */
|
|
115
|
+
async function fetchCapabilitiesCatalog() {
|
|
116
|
+
try {
|
|
117
|
+
const res = await fetch(`${getCpUrl()}/api/marketplace/capabilities`, {
|
|
118
|
+
signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
|
|
119
|
+
});
|
|
120
|
+
if (!res.ok)
|
|
121
|
+
return undefined;
|
|
122
|
+
const data = (await res.json());
|
|
123
|
+
const rows = data.capabilities ?? [];
|
|
124
|
+
const hashVersioned = rows.filter((r) => isHashVersion(r.version)).length;
|
|
125
|
+
return { total: rows.length, hashVersioned, semverVersioned: rows.length - hashVersioned };
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// ── comparison (reused, not re-derived) ─────────────────────────────────────
|
|
132
|
+
/**
|
|
133
|
+
* Is `to` strictly newer than `from`? Routed through the shared
|
|
134
|
+
* `computeTemplateUpdates` comparator (`@synap-core/workspace-templates`) —
|
|
135
|
+
* the same one `market update` uses — instead of a second semver parser.
|
|
136
|
+
* Returns `undefined` when either side is unknown (nothing to compare).
|
|
137
|
+
*/
|
|
138
|
+
function isNewer(from, to) {
|
|
139
|
+
if (!from || !to)
|
|
140
|
+
return undefined;
|
|
141
|
+
const entry = {
|
|
142
|
+
slug: "__cmp__",
|
|
143
|
+
name: "cmp",
|
|
144
|
+
tags: [],
|
|
145
|
+
isPrivate: false,
|
|
146
|
+
source: "remote",
|
|
147
|
+
remote: { slug: "__cmp__", name: "cmp", definition: { sourcePackage: { version: to } } },
|
|
148
|
+
};
|
|
149
|
+
const [check] = computeTemplateUpdates([{ slug: "__cmp__", version: from }], [entry]);
|
|
150
|
+
return check.updateAvailable;
|
|
151
|
+
}
|
|
152
|
+
// ── row rendering ───────────────────────────────────────────────────────────
|
|
153
|
+
const DASH = chalk.dim("—");
|
|
154
|
+
function fmt(v) {
|
|
155
|
+
return v ? v : DASH;
|
|
156
|
+
}
|
|
157
|
+
function printRow(label, value) {
|
|
158
|
+
console.log(` ${chalk.dim(label.padEnd(16))} ${value}`);
|
|
159
|
+
}
|
|
160
|
+
function printVerdict(d) {
|
|
161
|
+
if (d.inSync) {
|
|
162
|
+
log.success(d.message);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
log.warn(d.message);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
async function checkWorkspaceTemplates() {
|
|
169
|
+
const local = bundledTemplatesVersion() || undefined;
|
|
170
|
+
const npm = npmViewVersion("@synap-core/workspace-templates");
|
|
171
|
+
const [cpInfo, installed] = await Promise.all([
|
|
172
|
+
fetchCpSeededVersion(),
|
|
173
|
+
fetchInstalledTemplates(),
|
|
174
|
+
]);
|
|
175
|
+
const stamped = installed.filter((t) => t.version);
|
|
176
|
+
const pod = installed.length > 0
|
|
177
|
+
? `${stamped.length}/${installed.length} stamped`
|
|
178
|
+
: undefined;
|
|
179
|
+
const cpBehindNpm = isNewer(cpInfo?.version, npm);
|
|
180
|
+
const localBehindNpm = isNewer(local, npm);
|
|
181
|
+
let drift;
|
|
182
|
+
if (!npm) {
|
|
183
|
+
drift = { inSync: false, message: "? npm unreachable — cannot verify drift" };
|
|
184
|
+
}
|
|
185
|
+
else if (cpBehindNpm) {
|
|
186
|
+
drift = {
|
|
187
|
+
inSync: false,
|
|
188
|
+
message: `CP is behind npm (seeded ${cpInfo?.version}, latest ${npm}) — redeploy CP to propagate`,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
else if (cpInfo === undefined) {
|
|
192
|
+
drift = { inSync: false, message: "? CP has no known template package — cannot verify CP drift" };
|
|
193
|
+
}
|
|
194
|
+
else if (localBehindNpm) {
|
|
195
|
+
drift = {
|
|
196
|
+
inSync: false,
|
|
197
|
+
message: `Local CLI bundle is behind npm (local ${local}, latest ${npm}) — update @synap-core/workspace-templates`,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
drift = { inSync: true, message: "in sync" };
|
|
202
|
+
}
|
|
203
|
+
return { name: "workspace-templates", local, npm, cp: cpInfo?.version, cpSlug: cpInfo?.slug, pod, drift };
|
|
204
|
+
}
|
|
205
|
+
async function checkApiTypes(podUrl) {
|
|
206
|
+
const local = resolvedLocalVersion("@synap-core/api-types");
|
|
207
|
+
const npm = npmViewVersion("@synap-core/api-types");
|
|
208
|
+
const health = podUrl ? await fetchPodHealth(podUrl) : undefined;
|
|
209
|
+
const pod = health?.apiTypesVersion;
|
|
210
|
+
const podBehindNpm = isNewer(pod, npm);
|
|
211
|
+
let drift;
|
|
212
|
+
if (!npm) {
|
|
213
|
+
drift = { inSync: false, message: "? npm unreachable — cannot verify drift" };
|
|
214
|
+
}
|
|
215
|
+
else if (!pod) {
|
|
216
|
+
drift = { inSync: false, message: podUrl ? "? pod unreachable/older build — no apiTypesVersion reported" : "? no pod connected" };
|
|
217
|
+
}
|
|
218
|
+
else if (podBehindNpm) {
|
|
219
|
+
drift = {
|
|
220
|
+
inSync: false,
|
|
221
|
+
message: `Pod is behind npm (pod reports ${pod}, latest ${npm}) — bump the apiTypesVersion literal in synap-backend and redeploy`,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
drift = { inSync: true, message: "in sync" };
|
|
226
|
+
}
|
|
227
|
+
return { name: "api-types", local, npm, pod, drift };
|
|
228
|
+
}
|
|
229
|
+
async function checkCapabilities() {
|
|
230
|
+
const cat = await fetchCapabilitiesCatalog();
|
|
231
|
+
const cp = cat
|
|
232
|
+
? `${cat.total} published${cat.hashVersioned > 0 ? ` (${cat.hashVersioned} hash-versioned, ${cat.semverVersioned} semver)` : ""}`
|
|
233
|
+
: undefined;
|
|
234
|
+
const pod = "n/a, see synap status";
|
|
235
|
+
const drift = cat
|
|
236
|
+
? { inSync: true, message: cat.total > 0 ? `${cat.total} capabilities published to CP` : "no capabilities published" }
|
|
237
|
+
: { inSync: false, message: "? CP capability catalog unreachable" };
|
|
238
|
+
return { name: "capabilities", cp, pod, drift };
|
|
239
|
+
}
|
|
240
|
+
// ── entrypoint ───────────────────────────────────────────────────────────────
|
|
241
|
+
export async function versions(opts = {}) {
|
|
242
|
+
const localConfig = getActivePodConfig();
|
|
243
|
+
const podUrl = localConfig?.podUrl ?? process.env.SYNAP_POD_URL;
|
|
244
|
+
const [wt, at, cap] = await Promise.all([
|
|
245
|
+
checkWorkspaceTemplates(),
|
|
246
|
+
checkApiTypes(podUrl),
|
|
247
|
+
checkCapabilities(),
|
|
248
|
+
]);
|
|
249
|
+
if (opts.json) {
|
|
250
|
+
const artifacts = [
|
|
251
|
+
{ name: wt.name, local: wt.local ?? null, npm: wt.npm ?? null, cp: wt.cp ?? null, pod: wt.pod ?? null, drift: wt.drift },
|
|
252
|
+
{ name: at.name, local: at.local ?? null, npm: at.npm ?? null, cp: null, pod: at.pod ?? null, drift: at.drift },
|
|
253
|
+
{ name: cap.name, local: null, npm: null, cp: cap.cp ?? null, pod: cap.pod ?? null, drift: cap.drift },
|
|
254
|
+
];
|
|
255
|
+
process.stdout.write(JSON.stringify({ artifacts }, null, 2) + "\n");
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
banner();
|
|
259
|
+
log.dim("Version status across LOCAL / NPM / CONTROL-PLANE / POD for each Synap artifact.");
|
|
260
|
+
log.heading("workspace-templates");
|
|
261
|
+
printRow("LOCAL", fmt(wt.local));
|
|
262
|
+
printRow("NPM", fmt(wt.npm));
|
|
263
|
+
printRow("CP", wt.cp ? `${wt.cp}${wt.cpSlug ? chalk.dim(` (seeded via "${wt.cpSlug}")`) : ""}` : DASH);
|
|
264
|
+
printRow("POD", fmt(wt.pod));
|
|
265
|
+
printVerdict(wt.drift);
|
|
266
|
+
log.heading("api-types");
|
|
267
|
+
printRow("LOCAL", at.local ? at.local : chalk.dim("not installed in this CLI"));
|
|
268
|
+
printRow("NPM", fmt(at.npm));
|
|
269
|
+
printRow("POD", fmt(at.pod));
|
|
270
|
+
printVerdict(at.drift);
|
|
271
|
+
log.heading("capabilities");
|
|
272
|
+
printRow("CP", fmt(cap.cp));
|
|
273
|
+
printRow("POD", chalk.dim(cap.pod ?? ""));
|
|
274
|
+
printVerdict(cap.drift);
|
|
275
|
+
log.blank();
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/commands/versions.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/view.js
CHANGED
|
@@ -21,6 +21,7 @@ import { readFileSync } from "fs";
|
|
|
21
21
|
import chalk from "chalk";
|
|
22
22
|
import { log } from "../utils/logger.js";
|
|
23
23
|
import { resolveHubConfig, resolveUserId, hubGet, hubPost } from "../lib/hub-client.js";
|
|
24
|
+
import { unwrapList } from "../lib/unwrapList.js";
|
|
24
25
|
export async function viewCreate(opts) {
|
|
25
26
|
try {
|
|
26
27
|
const cfg = await resolveHubConfig(opts);
|
|
@@ -31,7 +32,7 @@ export async function viewCreate(opts) {
|
|
|
31
32
|
let profileId;
|
|
32
33
|
if (opts.profile) {
|
|
33
34
|
const profilesRes = await hubGet("/profiles", { userId, workspaceId: workspaceId ?? "" }, cfg);
|
|
34
|
-
const profiles = (profilesRes
|
|
35
|
+
const profiles = unwrapList(profilesRes, ["profiles", "items"]);
|
|
35
36
|
const match = profiles.find((p) => p.slug === opts.profile || p.id === opts.profile);
|
|
36
37
|
if (!match) {
|
|
37
38
|
log.error(`Profile "${opts.profile}" not found. Run: synap list profiles`);
|
|
@@ -82,7 +83,7 @@ export async function viewList(opts) {
|
|
|
82
83
|
if (opts.type)
|
|
83
84
|
params.type = opts.type;
|
|
84
85
|
const res = await hubGet("/views", params, cfg);
|
|
85
|
-
const views = (res
|
|
86
|
+
const views = unwrapList(res, ["views", "items"]);
|
|
86
87
|
if (opts.json) {
|
|
87
88
|
console.log(JSON.stringify(views, null, 2));
|
|
88
89
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/commands/view.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* synap whoami
|
|
3
|
+
*
|
|
4
|
+
* Answers the one question `synap status` can't: WHICH key is this session
|
|
5
|
+
* actually authenticating with, and does the ambient `SYNAP_HUB_API_KEY`
|
|
6
|
+
* silently disagree with the pinned `claude-code` surface key?
|
|
7
|
+
*
|
|
8
|
+
* `synap status` probes via `resolveHubConfig()` and prints a single "Valid"
|
|
9
|
+
* off whichever key wins — which HIDES the case where the env key is revoked
|
|
10
|
+
* but a valid surface key is pinned (or vice-versa). This command:
|
|
11
|
+
* 1. resolves the winning cfg (the key every command uses),
|
|
12
|
+
* 2. independently reads env key + `claude-code` surface key and reproduces
|
|
13
|
+
* the surface-over-env preference rule from hub-client.ts:394-403,
|
|
14
|
+
* 3. introspects the winner via `/auth/status`, and
|
|
15
|
+
* 4. when env and surface keys diverge, names the winner AND the ignored key,
|
|
16
|
+
* probing the loser too so the operator sees both states side by side.
|
|
17
|
+
*
|
|
18
|
+
* It never mutates state and never relies on resolveHubConfig's stderr swap
|
|
19
|
+
* warning (hub-client.ts:398-400) — it reads the divergence itself.
|
|
20
|
+
*/
|
|
21
|
+
export declare function whoami(): Promise<void>;
|