@synap-core/cli 1.7.0 → 1.10.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.d.ts +47 -0
- package/dist/commands/agent-run.js +301 -0
- package/dist/commands/agent-run.js.map +1 -0
- package/dist/commands/agents.js +85 -46
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/artifact.d.ts +26 -0
- package/dist/commands/artifact.js +76 -0
- package/dist/commands/artifact.js.map +1 -0
- package/dist/commands/automation.d.ts +47 -0
- package/dist/commands/automation.js +601 -0
- package/dist/commands/automation.js.map +1 -0
- 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 +1523 -0
- package/dist/commands/capability.js.map +1 -0
- package/dist/commands/cell.d.ts +55 -0
- package/dist/commands/cell.js +277 -0
- package/dist/commands/cell.js.map +1 -0
- package/dist/commands/centrality.d.ts +20 -0
- package/dist/commands/centrality.js +94 -0
- package/dist/commands/centrality.js.map +1 -0
- package/dist/commands/connect.d.ts +2 -0
- package/dist/commands/connect.js +25 -10
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/connections.js +0 -16
- package/dist/commands/connections.js.map +1 -1
- package/dist/commands/context.d.ts +22 -0
- package/dist/commands/context.js +149 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/data-extra.d.ts +14 -0
- package/dist/commands/data-extra.js +185 -0
- package/dist/commands/data-extra.js.map +1 -0
- package/dist/commands/data.d.ts +14 -10
- package/dist/commands/data.js +353 -192
- package/dist/commands/data.js.map +1 -1
- package/dist/commands/diagnose.d.ts +20 -0
- package/dist/commands/diagnose.js +143 -0
- package/dist/commands/diagnose.js.map +1 -0
- package/dist/commands/digest.d.ts +17 -0
- package/dist/commands/digest.js +121 -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 +39 -0
- package/dist/commands/doc.js +130 -0
- package/dist/commands/doc.js.map +1 -0
- package/dist/commands/events.d.ts +26 -0
- package/dist/commands/events.js +69 -0
- package/dist/commands/events.js.map +1 -0
- package/dist/commands/explain.d.ts +21 -0
- package/dist/commands/explain.js +251 -0
- package/dist/commands/explain.js.map +1 -0
- 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.d.ts +18 -0
- package/dist/commands/graph.js +74 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/home.d.ts +12 -0
- package/dist/commands/home.js +54 -0
- package/dist/commands/home.js.map +1 -0
- package/dist/commands/import.d.ts +38 -0
- package/dist/commands/import.js +440 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/init.d.ts +0 -2
- package/dist/commands/init.js +97 -118
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/keys.d.ts +9 -0
- package/dist/commands/keys.js +78 -0
- package/dist/commands/keys.js.map +1 -0
- package/dist/commands/knowledge.d.ts +34 -18
- package/dist/commands/knowledge.js +355 -57
- 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.d.ts +209 -0
- package/dist/commands/market.js +1368 -0
- package/dist/commands/market.js.map +1 -0
- package/dist/commands/mcp.d.ts +42 -0
- package/dist/commands/mcp.js +184 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/observe.d.ts +9 -0
- package/dist/commands/observe.js +93 -0
- package/dist/commands/observe.js.map +1 -0
- package/dist/commands/open.d.ts +32 -0
- package/dist/commands/open.js +85 -0
- package/dist/commands/open.js.map +1 -0
- 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 +6 -0
- package/dist/commands/pods.js +160 -50
- package/dist/commands/pods.js.map +1 -1
- package/dist/commands/proposals-actions.d.ts +7 -0
- package/dist/commands/proposals-actions.js +77 -0
- package/dist/commands/proposals-actions.js.map +1 -0
- package/dist/commands/providers.d.ts +38 -0
- package/dist/commands/providers.js +170 -0
- package/dist/commands/providers.js.map +1 -0
- 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.d.ts +31 -0
- package/dist/commands/sessions.js +248 -0
- package/dist/commands/sessions.js.map +1 -0
- 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.d.ts +26 -0
- package/dist/commands/skills-commands.js +187 -0
- package/dist/commands/skills-commands.js.map +1 -0
- package/dist/commands/skills.d.ts +26 -0
- package/dist/commands/skills.js +196 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/status.d.ts +3 -1
- package/dist/commands/status.js +231 -41
- 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.d.ts +19 -0
- package/dist/commands/subscribe.js +91 -0
- package/dist/commands/subscribe.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/versions.d.ts +27 -0
- package/dist/commands/versions.js +277 -0
- package/dist/commands/versions.js.map +1 -0
- package/dist/commands/view.d.ts +57 -0
- package/dist/commands/view.js +195 -0
- package/dist/commands/view.js.map +1 -0
- 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.d.ts +3 -4
- package/dist/index.js +1524 -202
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-templates.d.ts +25 -0
- package/dist/lib/agent-templates.js +148 -0
- package/dist/lib/agent-templates.js.map +1 -0
- package/dist/lib/agents-config.d.ts +4 -1
- package/dist/lib/agents-config.js +19 -2
- package/dist/lib/agents-config.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 +67 -0
- package/dist/lib/capture-lane.js +136 -0
- package/dist/lib/capture-lane.js.map +1 -0
- package/dist/lib/cp-packages.d.ts +121 -0
- package/dist/lib/cp-packages.js +218 -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 +84 -1
- package/dist/lib/hub-client.js +502 -22
- package/dist/lib/hub-client.js.map +1 -1
- 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 +104 -19
- package/dist/lib/pod.js +245 -57
- 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 +16 -5
- package/dist/lib/skills-installer.js +132 -18
- 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 +66 -2
- package/dist/lib/targets.js +914 -132
- package/dist/lib/targets.js.map +1 -1
- 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/package.json +10 -4
- package/skills/agent-os/SKILL.md +212 -0
- package/skills/manifest.json +5 -0
- package/skills/onboard/SKILL.md +186 -0
- package/skills/synap/SKILL.md +1524 -104
- 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 +10 -0
- package/skills/synap/cli-operations.md +107 -0
- package/skills/synap/common-mistakes.md +12 -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 +38 -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 +10 -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 +53 -0
- package/skills/synap/workspace-design.md +45 -0
- package/skills/synap/workspace-edges.md +49 -0
- package/skills/synap/writes.md +156 -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 +38 -11
- 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/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
- package/dist/lib/templates.d.ts +0 -11
- package/dist/lib/templates.js +0 -13
- package/dist/lib/templates.js.map +0 -1
- package/dist/templates/agent-os.json +0 -3090
- package/node_modules/@synap/hub-rest-client/dist/index.cjs +0 -881
- package/node_modules/@synap/hub-rest-client/dist/index.d.cts +0 -907
- package/node_modules/@synap/hub-rest-client/dist/index.d.ts +0 -907
- package/node_modules/@synap/hub-rest-client/dist/index.js +0 -851
- package/node_modules/@synap/hub-rest-client/package.json +0 -45
- package/node_modules/@synap/hub-rest-client/src/client.ts +0 -1143
- package/node_modules/@synap/hub-rest-client/src/errors.ts +0 -30
- package/node_modules/@synap/hub-rest-client/src/index.ts +0 -111
- package/node_modules/@synap/hub-rest-client/src/setup.ts +0 -77
- package/node_modules/@synap/hub-rest-client/src/types.ts +0 -639
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* synap view
|
|
3
|
+
*
|
|
4
|
+
* Manage views on the pod.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* synap view create --type kanban --profile task --name "My Board" --workspace <id>
|
|
8
|
+
* synap view create --type bento --profile note --json
|
|
9
|
+
* synap view list [--workspace <id>]
|
|
10
|
+
*
|
|
11
|
+
* API:
|
|
12
|
+
* POST /api/hub/views — CreateViewRequest: { userId, workspaceId, name, type, profileId, config, metadata }
|
|
13
|
+
* GET /api/hub/views — ListViewsQuery: { userId, workspaceId, type, profileId }
|
|
14
|
+
*
|
|
15
|
+
* Note: the backend accepts `profileId` (not `profileSlug`). The CLI accepts
|
|
16
|
+
* `--profile <slug>` for convenience and passes it as `profileId` — the backend
|
|
17
|
+
* resolves it at the entity level or stores it as-is. Pass a UUID if you need
|
|
18
|
+
* exact profile routing.
|
|
19
|
+
*/
|
|
20
|
+
export interface ViewCreateOpts {
|
|
21
|
+
type: string;
|
|
22
|
+
profile?: string;
|
|
23
|
+
name?: string;
|
|
24
|
+
workspace?: string;
|
|
25
|
+
json?: boolean;
|
|
26
|
+
podUrl?: string;
|
|
27
|
+
apiKey?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface ViewListOpts {
|
|
30
|
+
workspace?: string;
|
|
31
|
+
type?: string;
|
|
32
|
+
json?: boolean;
|
|
33
|
+
podUrl?: string;
|
|
34
|
+
apiKey?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function viewCreate(opts: ViewCreateOpts): Promise<void>;
|
|
37
|
+
export declare function viewList(opts: ViewListOpts): Promise<void>;
|
|
38
|
+
export interface ViewArrangeOpts {
|
|
39
|
+
file?: string;
|
|
40
|
+
workspace?: string;
|
|
41
|
+
json?: boolean;
|
|
42
|
+
podUrl?: string;
|
|
43
|
+
apiKey?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* POST /api/hub/views/:viewId/arrange
|
|
47
|
+
*
|
|
48
|
+
* Replaces the widget arrangement for a bento-type view.
|
|
49
|
+
* Payload: { userId, workspaceId?, widgets: BentoWidget[] }
|
|
50
|
+
*
|
|
51
|
+
* BentoWidget shape: { id, kind, x?, y?, w?, h?, config?, ...passthrough }
|
|
52
|
+
*
|
|
53
|
+
* Layout JSON can be provided via --file <path> or piped from stdin.
|
|
54
|
+
* Expected format: an array of BentoWidget objects, OR
|
|
55
|
+
* { widgets: BentoWidget[] } wrapper — both are accepted.
|
|
56
|
+
*/
|
|
57
|
+
export declare function viewArrange(viewId: string, opts: ViewArrangeOpts): Promise<void>;
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* synap view
|
|
3
|
+
*
|
|
4
|
+
* Manage views on the pod.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* synap view create --type kanban --profile task --name "My Board" --workspace <id>
|
|
8
|
+
* synap view create --type bento --profile note --json
|
|
9
|
+
* synap view list [--workspace <id>]
|
|
10
|
+
*
|
|
11
|
+
* API:
|
|
12
|
+
* POST /api/hub/views — CreateViewRequest: { userId, workspaceId, name, type, profileId, config, metadata }
|
|
13
|
+
* GET /api/hub/views — ListViewsQuery: { userId, workspaceId, type, profileId }
|
|
14
|
+
*
|
|
15
|
+
* Note: the backend accepts `profileId` (not `profileSlug`). The CLI accepts
|
|
16
|
+
* `--profile <slug>` for convenience and passes it as `profileId` — the backend
|
|
17
|
+
* resolves it at the entity level or stores it as-is. Pass a UUID if you need
|
|
18
|
+
* exact profile routing.
|
|
19
|
+
*/
|
|
20
|
+
import { readFileSync } from "fs";
|
|
21
|
+
import chalk from "chalk";
|
|
22
|
+
import { log } from "../utils/logger.js";
|
|
23
|
+
import { resolveHubConfig, resolveUserId, hubGet, hubPost } from "../lib/hub-client.js";
|
|
24
|
+
import { unwrapList } from "../lib/unwrapList.js";
|
|
25
|
+
export async function viewCreate(opts) {
|
|
26
|
+
try {
|
|
27
|
+
const cfg = await resolveHubConfig(opts);
|
|
28
|
+
const userId = await resolveUserId(cfg);
|
|
29
|
+
const name = opts.name ?? `${opts.type} view`;
|
|
30
|
+
const workspaceId = opts.workspace ?? cfg.workspaceId;
|
|
31
|
+
// Resolve profile slug → UUID (backend requires UUID for profileId)
|
|
32
|
+
let profileId;
|
|
33
|
+
if (opts.profile) {
|
|
34
|
+
const profilesRes = await hubGet("/profiles", { userId, workspaceId: workspaceId ?? "" }, cfg);
|
|
35
|
+
const profiles = unwrapList(profilesRes, ["profiles", "items"]);
|
|
36
|
+
const match = profiles.find((p) => p.slug === opts.profile || p.id === opts.profile);
|
|
37
|
+
if (!match) {
|
|
38
|
+
log.error(`Profile "${opts.profile}" not found. Run: synap list profiles`);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
profileId = String(match.id);
|
|
42
|
+
}
|
|
43
|
+
const body = {
|
|
44
|
+
userId,
|
|
45
|
+
name,
|
|
46
|
+
type: opts.type,
|
|
47
|
+
};
|
|
48
|
+
if (workspaceId)
|
|
49
|
+
body.workspaceId = workspaceId;
|
|
50
|
+
if (profileId)
|
|
51
|
+
body.profileId = profileId;
|
|
52
|
+
const res = await hubPost("/views", body, cfg);
|
|
53
|
+
if (opts.json) {
|
|
54
|
+
console.log(JSON.stringify(res, null, 2));
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const isProposed = res.status === "proposed" || Boolean(res.proposalId);
|
|
58
|
+
if (isProposed) {
|
|
59
|
+
log.warn(`Queued for approval (proposal: ${String(res.proposalId ?? "")})`);
|
|
60
|
+
if (res.reviewUrl)
|
|
61
|
+
log.dim(` Review: ${String(res.reviewUrl)}`);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
log.success(`View created: ${String(res.name ?? name)}`);
|
|
65
|
+
log.dim(`id: ${String(res.id ?? "")}`);
|
|
66
|
+
if (res.type)
|
|
67
|
+
log.dim(`type: ${String(res.type)}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
log.error("Error: " + e.message);
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export async function viewList(opts) {
|
|
76
|
+
try {
|
|
77
|
+
const cfg = await resolveHubConfig(opts);
|
|
78
|
+
const userId = await resolveUserId(cfg);
|
|
79
|
+
const workspaceId = opts.workspace ?? cfg.workspaceId;
|
|
80
|
+
const params = { userId };
|
|
81
|
+
if (workspaceId)
|
|
82
|
+
params.workspaceId = workspaceId;
|
|
83
|
+
if (opts.type)
|
|
84
|
+
params.type = opts.type;
|
|
85
|
+
const res = await hubGet("/views", params, cfg);
|
|
86
|
+
const views = unwrapList(res, ["views", "items"]);
|
|
87
|
+
if (opts.json) {
|
|
88
|
+
console.log(JSON.stringify(views, null, 2));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (views.length === 0) {
|
|
92
|
+
log.dim(`No views found${opts.type ? ` of type '${opts.type}'` : ""}.`);
|
|
93
|
+
if (opts.type)
|
|
94
|
+
log.dim(" Drop --type to list all views in the workspace.");
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
log.heading(`Views${opts.type ? ` (${opts.type})` : ""}${workspaceId ? ` in workspace ${workspaceId.slice(0, 8)}…` : ""}`);
|
|
98
|
+
console.log("");
|
|
99
|
+
for (const v of views) {
|
|
100
|
+
const type = String(v.type ?? "").padEnd(14);
|
|
101
|
+
const name = String(v.name ?? "–").slice(0, 40).padEnd(42);
|
|
102
|
+
const id = chalk.dim(String(v.id ?? "").slice(0, 8));
|
|
103
|
+
const profile = v.profileId ? chalk.dim(` [${v.profileId}]`) : "";
|
|
104
|
+
console.log(` ${chalk.cyan(type)} ${name} ${id}${profile}`);
|
|
105
|
+
}
|
|
106
|
+
console.log("");
|
|
107
|
+
}
|
|
108
|
+
catch (e) {
|
|
109
|
+
log.error("Error: " + e.message);
|
|
110
|
+
process.exit(1);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* POST /api/hub/views/:viewId/arrange
|
|
115
|
+
*
|
|
116
|
+
* Replaces the widget arrangement for a bento-type view.
|
|
117
|
+
* Payload: { userId, workspaceId?, widgets: BentoWidget[] }
|
|
118
|
+
*
|
|
119
|
+
* BentoWidget shape: { id, kind, x?, y?, w?, h?, config?, ...passthrough }
|
|
120
|
+
*
|
|
121
|
+
* Layout JSON can be provided via --file <path> or piped from stdin.
|
|
122
|
+
* Expected format: an array of BentoWidget objects, OR
|
|
123
|
+
* { widgets: BentoWidget[] } wrapper — both are accepted.
|
|
124
|
+
*/
|
|
125
|
+
export async function viewArrange(viewId, opts) {
|
|
126
|
+
try {
|
|
127
|
+
// Read layout JSON from --file or stdin
|
|
128
|
+
let raw;
|
|
129
|
+
if (opts.file) {
|
|
130
|
+
try {
|
|
131
|
+
raw = readFileSync(opts.file, "utf-8");
|
|
132
|
+
}
|
|
133
|
+
catch (e) {
|
|
134
|
+
log.error(`Cannot read file: ${opts.file} — ${e.message}`);
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else if (!process.stdin.isTTY) {
|
|
139
|
+
raw = await new Promise((resolve, reject) => {
|
|
140
|
+
const chunks = [];
|
|
141
|
+
process.stdin.on("data", (chunk) => chunks.push(chunk));
|
|
142
|
+
process.stdin.on("end", () => resolve(Buffer.concat(chunks).toString("utf-8")));
|
|
143
|
+
process.stdin.on("error", reject);
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
log.error("Provide layout JSON via --file <path> or pipe stdin.\n" +
|
|
148
|
+
" Format: array of { id, kind, x?, y?, w?, h?, config? } objects, or { widgets: [...] }.");
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
151
|
+
let parsed;
|
|
152
|
+
try {
|
|
153
|
+
parsed = JSON.parse(raw);
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
log.error("Layout JSON is not valid JSON.");
|
|
157
|
+
process.exit(1);
|
|
158
|
+
}
|
|
159
|
+
// Accept both bare array and { widgets: [...] } wrapper
|
|
160
|
+
const widgets = Array.isArray(parsed)
|
|
161
|
+
? parsed
|
|
162
|
+
: Array.isArray(parsed.widgets)
|
|
163
|
+
? parsed.widgets
|
|
164
|
+
: [];
|
|
165
|
+
if (widgets.length === 0) {
|
|
166
|
+
log.error("No widgets found in layout. Expected an array or { widgets: [...] }.");
|
|
167
|
+
process.exit(1);
|
|
168
|
+
}
|
|
169
|
+
const cfg = await resolveHubConfig(opts);
|
|
170
|
+
const userId = await resolveUserId(cfg);
|
|
171
|
+
const workspaceId = opts.workspace ?? cfg.workspaceId;
|
|
172
|
+
const body = { userId, widgets };
|
|
173
|
+
if (workspaceId)
|
|
174
|
+
body.workspaceId = workspaceId;
|
|
175
|
+
const res = (await hubPost(`/views/${viewId}/arrange`, body, cfg));
|
|
176
|
+
if (opts.json) {
|
|
177
|
+
console.log(JSON.stringify(res, null, 2));
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const isProposed = res.status === "proposed" || Boolean(res.proposalId);
|
|
181
|
+
if (isProposed) {
|
|
182
|
+
log.warn(`Queued for approval (proposal: ${String(res.proposalId ?? "")})`);
|
|
183
|
+
if (res.reviewUrl)
|
|
184
|
+
log.dim(` Review: ${String(res.reviewUrl)}`);
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
log.success(`View arranged: ${viewId.slice(0, 8)}…`);
|
|
188
|
+
log.dim(` ${widgets.length} widget(s) set`);
|
|
189
|
+
}
|
|
190
|
+
catch (e) {
|
|
191
|
+
log.error("Error: " + e.message);
|
|
192
|
+
process.exit(1);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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>;
|
|
@@ -0,0 +1,129 @@
|
|
|
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
|
+
import chalk from "chalk";
|
|
22
|
+
import { log, banner } from "../utils/logger.js";
|
|
23
|
+
import { resolveHubConfig, hubGet, HubError } from "../lib/hub-client.js";
|
|
24
|
+
import { getSurfaceAgentKey } from "../lib/pod.js";
|
|
25
|
+
/** Last 6+ chars of a key, for eyeballing which secret is in play without leaking it. */
|
|
26
|
+
function keyTail(apiKey) {
|
|
27
|
+
return apiKey.length <= 8 ? "…" : `…${apiKey.slice(-6)}`;
|
|
28
|
+
}
|
|
29
|
+
/** Introspect a specific key by cloning the winning cfg and swapping the secret. */
|
|
30
|
+
async function probeKey(cfg, apiKey) {
|
|
31
|
+
try {
|
|
32
|
+
const status = (await hubGet("/auth/status", {}, { ...cfg, apiKey }));
|
|
33
|
+
return { kind: "ok", status };
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
const is401 = err instanceof HubError
|
|
37
|
+
? err.status === 401
|
|
38
|
+
: String(err instanceof Error ? err.message : err).toLowerCase().includes("unauthorized");
|
|
39
|
+
if (is401)
|
|
40
|
+
return { kind: "revoked" };
|
|
41
|
+
return { kind: "error", message: err instanceof Error ? err.message : String(err) };
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function renderAuthStatus(s) {
|
|
45
|
+
log.info(`Key ID : ${s.keyIdPrefix ?? "unknown"}`);
|
|
46
|
+
log.info(`Key type : ${s.keyType ?? chalk.dim("unknown")}`);
|
|
47
|
+
log.info(`Identity : ${s.userEmail ?? s.userName ?? s.userId ?? "unknown"}`);
|
|
48
|
+
if (s.name)
|
|
49
|
+
log.info(`Key name : ${s.name}`);
|
|
50
|
+
log.info(`Workspace : ${s.workspaceId ?? chalk.dim("unknown")}`);
|
|
51
|
+
log.info(`Scopes : ${s.scopes && s.scopes.length ? s.scopes.join(", ") : chalk.dim("(none)")}`);
|
|
52
|
+
const active = s.isActive === true ? chalk.green("active") : s.isActive === false ? chalk.red("revoked") : chalk.dim("unknown");
|
|
53
|
+
log.info(`Status : ${active}`);
|
|
54
|
+
log.info(`Expires : ${s.expiresAt ?? chalk.dim("never")}`);
|
|
55
|
+
}
|
|
56
|
+
export async function whoami() {
|
|
57
|
+
banner();
|
|
58
|
+
// 1. The key that actually authenticates every command.
|
|
59
|
+
let cfg;
|
|
60
|
+
try {
|
|
61
|
+
cfg = await resolveHubConfig();
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
log.error(err instanceof Error ? err.message : String(err));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
// 2. Independently read the two candidate keys and reproduce the preference
|
|
68
|
+
// rule from hub-client.ts:394-403 — do NOT depend on resolveHubConfig's
|
|
69
|
+
// stderr swap warning, read the state ourselves.
|
|
70
|
+
const envKey = process.env.SYNAP_HUB_API_KEY;
|
|
71
|
+
const envPod = process.env.SYNAP_POD_URL;
|
|
72
|
+
const surfaceKey = getSurfaceAgentKey("claude-code");
|
|
73
|
+
const surfacePinnedHere = !!surfaceKey && !!surfaceKey.hubApiKey && surfaceKey.podUrl === envPod;
|
|
74
|
+
const diverges = !!envKey &&
|
|
75
|
+
surfacePinnedHere &&
|
|
76
|
+
surfaceKey.hubApiKey !== envKey;
|
|
77
|
+
// Which candidate did resolveHubConfig actually pick?
|
|
78
|
+
const winner = diverges
|
|
79
|
+
? cfg.apiKey === surfaceKey.hubApiKey
|
|
80
|
+
? "surface"
|
|
81
|
+
: "env"
|
|
82
|
+
: "other";
|
|
83
|
+
// 3. Introspect the winning key.
|
|
84
|
+
log.heading("Winning key (resolved)");
|
|
85
|
+
log.info(`Pod : ${cfg.podUrl}`);
|
|
86
|
+
log.dim(`Secret : ${keyTail(cfg.apiKey)}`);
|
|
87
|
+
const winnerProbe = await probeKey(cfg, cfg.apiKey);
|
|
88
|
+
if (winnerProbe.kind === "ok") {
|
|
89
|
+
renderAuthStatus(winnerProbe.status);
|
|
90
|
+
}
|
|
91
|
+
else if (winnerProbe.kind === "revoked") {
|
|
92
|
+
log.error("This key is revoked or expired — /auth/status returned 401.");
|
|
93
|
+
log.hint("Refresh it with: synap login --reconnect");
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
log.warn(`Could not introspect key: ${winnerProbe.message}`);
|
|
97
|
+
}
|
|
98
|
+
// 4. Divergence report — the whole point of the command.
|
|
99
|
+
if (!diverges) {
|
|
100
|
+
if (envKey && surfacePinnedHere) {
|
|
101
|
+
log.dim("\nEnv key and claude-code surface key agree — no divergence.");
|
|
102
|
+
}
|
|
103
|
+
log.blank();
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
log.heading("⚠ Key divergence detected");
|
|
107
|
+
const winnerLabel = winner === "surface" ? "claude-code surface key" : "ambient SYNAP_HUB_API_KEY";
|
|
108
|
+
const loserLabel = winner === "surface" ? "ambient SYNAP_HUB_API_KEY" : "claude-code surface key";
|
|
109
|
+
const loserSecret = winner === "surface" ? envKey : surfaceKey.hubApiKey;
|
|
110
|
+
// Mirror the surface-key warning wording at hub-client.ts:398-400.
|
|
111
|
+
log.warn(`ambient SYNAP_HUB_API_KEY does not match the claude-code surface key pinned to ${envPod}.`);
|
|
112
|
+
log.info(`Winner (used) : ${chalk.bold(winnerLabel)} ${chalk.dim(keyTail(cfg.apiKey))}`);
|
|
113
|
+
log.info(`Ignored (in play) : ${loserLabel} ${chalk.dim(keyTail(loserSecret))}`);
|
|
114
|
+
// Probe the LOSING key so both states are visible side by side.
|
|
115
|
+
const loserProbe = await probeKey(cfg, loserSecret);
|
|
116
|
+
if (loserProbe.kind === "ok") {
|
|
117
|
+
const s = loserProbe.status;
|
|
118
|
+
const active = s.isActive === false ? chalk.red("revoked") : chalk.green("valid");
|
|
119
|
+
log.info(` ${loserLabel} → ${active} (${s.keyIdPrefix ?? "?"}, ${s.userEmail ?? s.userId ?? "?"})`);
|
|
120
|
+
}
|
|
121
|
+
else if (loserProbe.kind === "revoked") {
|
|
122
|
+
log.warn(` ${loserLabel} → ${chalk.red("revoked")} (401 from /auth/status)`);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
log.dim(` ${loserLabel} → could not verify: ${loserProbe.message}`);
|
|
126
|
+
}
|
|
127
|
+
log.blank();
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=whoami.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* @synap/cli — Connect
|
|
3
|
+
* @synap/cli — Connect AI agents to your Synap data pod
|
|
4
4
|
*
|
|
5
5
|
* Usage:
|
|
6
6
|
* npx @synap/cli init Full setup: detect, harden, connect, install
|
|
7
|
-
* npx @synap/cli connect Connect
|
|
8
|
-
* npx @synap/cli
|
|
9
|
-
* npx @synap/cli status Show pod + OpenClaw health
|
|
7
|
+
* npx @synap/cli connect Connect an AI surface to a Synap pod
|
|
8
|
+
* npx @synap/cli status Show pod health and API status
|
|
10
9
|
* npx @synap/cli update Update skill + check for CLI updates
|
|
11
10
|
*
|
|
12
11
|
* Or install globally:
|