@synap-core/cli 1.11.0 → 1.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -198
- package/dist/build-info.json +6 -0
- package/dist/commands/agent-run.js +3 -2
- package/dist/commands/agent-run.js.map +1 -1
- package/dist/commands/agents.d.ts +33 -17
- package/dist/commands/agents.js +203 -237
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/app.d.ts +143 -0
- package/dist/commands/app.js +523 -0
- package/dist/commands/app.js.map +1 -0
- package/dist/commands/automate.d.ts +21 -0
- package/dist/commands/automate.js +42 -0
- package/dist/commands/automate.js.map +1 -0
- package/dist/commands/automation-schema.test.d.ts +16 -0
- package/dist/commands/automation-schema.test.js +77 -0
- package/dist/commands/automation-schema.test.js.map +1 -0
- package/dist/commands/automation.d.ts +12 -0
- package/dist/commands/automation.js +80 -35
- package/dist/commands/automation.js.map +1 -1
- package/dist/commands/bridge-setup.d.ts +14 -1
- package/dist/commands/bridge-setup.js +392 -128
- package/dist/commands/bridge-setup.js.map +1 -1
- package/dist/commands/cap-connections.d.ts +4 -4
- package/dist/commands/cap-connections.js +14 -14
- package/dist/commands/cap-connections.js.map +1 -1
- package/dist/commands/capability.d.ts +2 -0
- package/dist/commands/capability.js +218 -168
- package/dist/commands/capability.js.map +1 -1
- package/dist/commands/catalog.d.ts +275 -0
- package/dist/commands/catalog.js +481 -0
- package/dist/commands/catalog.js.map +1 -0
- package/dist/commands/cell.d.ts +155 -8
- package/dist/commands/cell.js +416 -40
- package/dist/commands/cell.js.map +1 -1
- package/dist/commands/centrality.js +1 -13
- package/dist/commands/centrality.js.map +1 -1
- package/dist/commands/connect.d.ts +38 -13
- package/dist/commands/connect.js +68 -167
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/connections.d.ts +3 -2
- package/dist/commands/connections.js +95 -25
- package/dist/commands/connections.js.map +1 -1
- package/dist/commands/context.js +7 -1
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/data-extra.d.ts +34 -0
- package/dist/commands/data-extra.js +193 -23
- package/dist/commands/data-extra.js.map +1 -1
- package/dist/commands/data.d.ts +120 -2
- package/dist/commands/data.js +293 -20
- package/dist/commands/data.js.map +1 -1
- package/dist/commands/diagnose.d.ts +66 -4
- package/dist/commands/diagnose.js +285 -28
- package/dist/commands/diagnose.js.map +1 -1
- package/dist/commands/doc.d.ts +11 -4
- package/dist/commands/doc.js +39 -14
- package/dist/commands/doc.js.map +1 -1
- package/dist/commands/doctor.d.ts +112 -3
- package/dist/commands/doctor.js +657 -32
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/explain.js +5 -5
- package/dist/commands/explain.js.map +1 -1
- package/dist/commands/import.d.ts +368 -13
- package/dist/commands/import.js +1064 -54
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/init.d.ts +20 -9
- package/dist/commands/init.js +433 -973
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/keys.d.ts +1 -0
- package/dist/commands/keys.js +15 -2
- package/dist/commands/keys.js.map +1 -1
- package/dist/commands/knowledge.d.ts +22 -6
- package/dist/commands/knowledge.js +117 -55
- package/dist/commands/knowledge.js.map +1 -1
- package/dist/commands/lens.d.ts +37 -1
- package/dist/commands/lens.js +192 -71
- package/dist/commands/lens.js.map +1 -1
- package/dist/commands/market-authoring.d.ts +29 -2
- package/dist/commands/market-authoring.js +348 -7
- package/dist/commands/market-authoring.js.map +1 -1
- package/dist/commands/market-official.d.ts +58 -0
- package/dist/commands/market-official.js +84 -0
- package/dist/commands/market-official.js.map +1 -0
- package/dist/commands/market.d.ts +400 -16
- package/dist/commands/market.js +1802 -146
- package/dist/commands/market.js.map +1 -1
- package/dist/commands/mcp.d.ts +60 -25
- package/dist/commands/mcp.js +251 -64
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/open.d.ts +39 -9
- package/dist/commands/open.js +80 -25
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/playbook.d.ts +42 -0
- package/dist/commands/playbook.js +162 -0
- package/dist/commands/playbook.js.map +1 -0
- package/dist/commands/pod.js +1 -1
- package/dist/commands/pod.js.map +1 -1
- package/dist/commands/pods.d.ts +5 -0
- package/dist/commands/pods.js +97 -116
- package/dist/commands/pods.js.map +1 -1
- package/dist/commands/proposals-actions.d.ts +62 -0
- package/dist/commands/proposals-actions.js +143 -8
- package/dist/commands/proposals-actions.js.map +1 -1
- package/dist/commands/proposals-await.d.ts +68 -0
- package/dist/commands/proposals-await.js +248 -0
- package/dist/commands/proposals-await.js.map +1 -0
- package/dist/commands/proton-setup.d.ts +73 -0
- package/dist/commands/proton-setup.js +577 -0
- package/dist/commands/proton-setup.js.map +1 -0
- package/dist/commands/providers.d.ts +23 -0
- package/dist/commands/providers.js +126 -1
- package/dist/commands/providers.js.map +1 -1
- package/dist/commands/raycast.js +6 -2
- package/dist/commands/raycast.js.map +1 -1
- package/dist/commands/rule.d.ts +150 -0
- package/dist/commands/rule.js +447 -0
- package/dist/commands/rule.js.map +1 -0
- package/dist/commands/session-wait.d.ts +111 -0
- package/dist/commands/session-wait.js +209 -0
- package/dist/commands/session-wait.js.map +1 -0
- package/dist/commands/sessions.d.ts +52 -0
- package/dist/commands/sessions.js +478 -58
- package/dist/commands/sessions.js.map +1 -1
- package/dist/commands/skill-manage.d.ts +21 -0
- package/dist/commands/skill-manage.js +136 -19
- package/dist/commands/skill-manage.js.map +1 -1
- package/dist/commands/skills.js +16 -0
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/status.d.ts +1 -4
- package/dist/commands/status.js +5 -34
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/statusline.backoff.test.d.ts +13 -0
- package/dist/commands/statusline.backoff.test.js +100 -0
- package/dist/commands/statusline.backoff.test.js.map +1 -0
- package/dist/commands/statusline.js +16 -9
- package/dist/commands/statusline.js.map +1 -1
- package/dist/commands/sync-status.d.ts +12 -0
- package/dist/commands/sync-status.js +125 -0
- package/dist/commands/sync-status.js.map +1 -0
- package/dist/commands/templates-retire.d.ts +34 -0
- package/dist/commands/templates-retire.js +192 -0
- package/dist/commands/templates-retire.js.map +1 -0
- package/dist/commands/tools.js +6 -21
- package/dist/commands/tools.js.map +1 -1
- package/dist/commands/tracks.d.ts +51 -0
- package/dist/commands/tracks.js +291 -0
- package/dist/commands/tracks.js.map +1 -0
- package/dist/commands/update.d.ts +3 -11
- package/dist/commands/update.js +5 -134
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/upload.d.ts +41 -3
- package/dist/commands/upload.js +120 -18
- package/dist/commands/upload.js.map +1 -1
- package/dist/commands/vendor.d.ts +28 -0
- package/dist/commands/vendor.js +110 -0
- package/dist/commands/vendor.js.map +1 -0
- package/dist/commands/versions.js +6 -0
- package/dist/commands/versions.js.map +1 -1
- package/dist/commands/view.js +10 -5
- package/dist/commands/view.js.map +1 -1
- package/dist/commands/whoami.d.ts +23 -3
- package/dist/commands/whoami.js +169 -23
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/worker.d.ts +122 -0
- package/dist/commands/worker.js +435 -0
- package/dist/commands/worker.js.map +1 -0
- package/dist/commands/worker.test.d.ts +1 -0
- package/dist/commands/worker.test.js +116 -0
- package/dist/commands/worker.test.js.map +1 -0
- package/dist/commands/workspace-ops.d.ts +35 -0
- package/dist/commands/workspace-ops.js +153 -0
- package/dist/commands/workspace-ops.js.map +1 -0
- package/dist/index.d.ts +6 -6
- package/dist/index.js +900 -180
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-connections.d.ts +31 -0
- package/dist/lib/agent-connections.js +33 -0
- package/dist/lib/agent-connections.js.map +1 -0
- package/dist/lib/agent-detect.d.ts +27 -0
- package/dist/lib/agent-detect.js +71 -0
- package/dist/lib/agent-detect.js.map +1 -0
- package/dist/lib/agent-door.d.ts +138 -0
- package/dist/lib/agent-door.js +426 -0
- package/dist/lib/agent-door.js.map +1 -0
- package/dist/lib/agents-config.d.ts +2 -0
- package/dist/lib/agents-config.js +4 -9
- package/dist/lib/agents-config.js.map +1 -1
- package/dist/lib/approval-poll.d.ts +31 -2
- package/dist/lib/approval-poll.js +20 -7
- package/dist/lib/approval-poll.js.map +1 -1
- package/dist/lib/atomic-file.d.ts +48 -0
- package/dist/lib/atomic-file.js +129 -0
- package/dist/lib/atomic-file.js.map +1 -0
- package/dist/lib/auth.d.ts +14 -9
- package/dist/lib/auth.js +44 -61
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/batch-approval.d.ts +85 -0
- package/dist/lib/batch-approval.js +170 -0
- package/dist/lib/batch-approval.js.map +1 -0
- package/dist/lib/capture-lane.d.ts +6 -5
- package/dist/lib/capture-lane.js +6 -5
- package/dist/lib/capture-lane.js.map +1 -1
- package/dist/lib/capture-structure.d.ts +230 -11
- package/dist/lib/capture-structure.js +251 -13
- package/dist/lib/capture-structure.js.map +1 -1
- package/dist/lib/catalog-templates.d.ts +59 -0
- package/dist/lib/catalog-templates.js +126 -0
- package/dist/lib/catalog-templates.js.map +1 -0
- package/dist/lib/cli-build.d.ts +19 -0
- package/dist/lib/cli-build.js +37 -0
- package/dist/lib/cli-build.js.map +1 -0
- package/dist/lib/conversation-headers.d.ts +18 -0
- package/dist/lib/conversation-headers.js +32 -0
- package/dist/lib/conversation-headers.js.map +1 -0
- package/dist/lib/cp-packages.d.ts +167 -11
- package/dist/lib/cp-packages.js +253 -21
- package/dist/lib/cp-packages.js.map +1 -1
- package/dist/lib/credential-class.d.ts +117 -0
- package/dist/lib/credential-class.js +116 -0
- package/dist/lib/credential-class.js.map +1 -0
- package/dist/lib/describe-lens.d.ts +35 -0
- package/dist/lib/describe-lens.js +40 -0
- package/dist/lib/describe-lens.js.map +1 -1
- package/dist/lib/device-connect.d.ts +125 -0
- package/dist/lib/device-connect.js +256 -0
- package/dist/lib/device-connect.js.map +1 -0
- package/dist/lib/directory-lens.d.ts +99 -0
- package/dist/lib/directory-lens.js +187 -0
- package/dist/lib/directory-lens.js.map +1 -0
- package/dist/lib/exporter-coverage.d.ts +71 -0
- package/dist/lib/exporter-coverage.js +97 -0
- package/dist/lib/exporter-coverage.js.map +1 -0
- package/dist/lib/hub-client.d.ts +29 -8
- package/dist/lib/hub-client.js +328 -55
- package/dist/lib/hub-client.js.map +1 -1
- package/dist/lib/init-connect.d.ts +41 -0
- package/dist/lib/init-connect.js +75 -0
- package/dist/lib/init-connect.js.map +1 -0
- package/dist/lib/init-exit.d.ts +24 -0
- package/dist/lib/init-exit.js +41 -0
- package/dist/lib/init-exit.js.map +1 -0
- package/dist/lib/init-flow.d.ts +25 -0
- package/dist/lib/init-flow.js +40 -0
- package/dist/lib/init-flow.js.map +1 -0
- package/dist/lib/init-handoff.d.ts +16 -0
- package/dist/lib/init-handoff.js +19 -0
- package/dist/lib/init-handoff.js.map +1 -0
- package/dist/lib/init-output.d.ts +18 -0
- package/dist/lib/init-output.js +43 -0
- package/dist/lib/init-output.js.map +1 -0
- package/dist/lib/init-pod.d.ts +45 -0
- package/dist/lib/init-pod.js +36 -0
- package/dist/lib/init-pod.js.map +1 -0
- package/dist/lib/installed.d.ts +210 -11
- package/dist/lib/installed.js +234 -36
- package/dist/lib/installed.js.map +1 -1
- package/dist/lib/key-approval.d.ts +57 -0
- package/dist/lib/key-approval.js +117 -0
- package/dist/lib/key-approval.js.map +1 -0
- package/dist/lib/key-diagnosis.d.ts +56 -0
- package/dist/lib/key-diagnosis.js +227 -0
- package/dist/lib/key-diagnosis.js.map +1 -0
- package/dist/lib/key-doctor.d.ts +136 -0
- package/dist/lib/key-doctor.js +286 -0
- package/dist/lib/key-doctor.js.map +1 -0
- package/dist/lib/key-locations.d.ts +120 -0
- package/dist/lib/key-locations.js +326 -0
- package/dist/lib/key-locations.js.map +1 -0
- package/dist/lib/key-source.d.ts +66 -0
- package/dist/lib/key-source.js +106 -0
- package/dist/lib/key-source.js.map +1 -0
- package/dist/lib/key-state.d.ts +70 -0
- package/dist/lib/key-state.js +115 -0
- package/dist/lib/key-state.js.map +1 -0
- package/dist/lib/kind-package.d.ts +181 -0
- package/dist/lib/kind-package.js +679 -0
- package/dist/lib/kind-package.js.map +1 -0
- package/dist/lib/knowledge-title.d.ts +24 -0
- package/dist/lib/knowledge-title.js +46 -0
- package/dist/lib/knowledge-title.js.map +1 -0
- package/dist/lib/knowledge-title.test.d.ts +1 -0
- package/dist/lib/knowledge-title.test.js +34 -0
- package/dist/lib/knowledge-title.test.js.map +1 -0
- package/dist/lib/machine-instance.d.ts +64 -0
- package/dist/lib/machine-instance.js +142 -0
- package/dist/lib/machine-instance.js.map +1 -0
- package/dist/lib/mcp-bridge.d.ts +42 -0
- package/dist/lib/mcp-bridge.js +147 -0
- package/dist/lib/mcp-bridge.js.map +1 -0
- package/dist/lib/mcp-bridge.test.d.ts +1 -0
- package/dist/lib/mcp-bridge.test.js +90 -0
- package/dist/lib/mcp-bridge.test.js.map +1 -0
- package/dist/lib/mcp-call.d.ts +30 -0
- package/dist/lib/mcp-call.js +107 -0
- package/dist/lib/mcp-call.js.map +1 -0
- package/dist/lib/mcp-snippets.d.ts +53 -0
- package/dist/lib/mcp-snippets.js +82 -0
- package/dist/lib/mcp-snippets.js.map +1 -0
- package/dist/lib/next-steps.d.ts +8 -0
- package/dist/lib/next-steps.js +31 -1
- package/dist/lib/next-steps.js.map +1 -1
- package/dist/lib/package-wire.d.ts +179 -0
- package/dist/lib/package-wire.js +68 -0
- package/dist/lib/package-wire.js.map +1 -0
- package/dist/lib/pair-link.d.ts +38 -0
- package/dist/lib/pair-link.js +68 -0
- package/dist/lib/pair-link.js.map +1 -0
- package/dist/lib/pod-wide.d.ts +40 -0
- package/dist/lib/pod-wide.js +46 -0
- package/dist/lib/pod-wide.js.map +1 -0
- package/dist/lib/pod.d.ts +66 -112
- package/dist/lib/pod.js +134 -412
- package/dist/lib/pod.js.map +1 -1
- package/dist/lib/project-ref.d.ts +9 -3
- package/dist/lib/project-ref.js +10 -4
- package/dist/lib/project-ref.js.map +1 -1
- package/dist/lib/review-credential.d.ts +119 -0
- package/dist/lib/review-credential.js +147 -0
- package/dist/lib/review-credential.js.map +1 -0
- package/dist/lib/safe-open.d.ts +49 -0
- package/dist/lib/safe-open.js +119 -0
- package/dist/lib/safe-open.js.map +1 -0
- package/dist/lib/session-lens.d.ts +40 -1
- package/dist/lib/session-lens.js +54 -4
- package/dist/lib/session-lens.js.map +1 -1
- package/dist/lib/superwhisper-import.d.ts +8 -0
- package/dist/lib/superwhisper-import.js +14 -7
- package/dist/lib/superwhisper-import.js.map +1 -1
- package/dist/lib/superwhisper-title.test.d.ts +1 -0
- package/dist/lib/superwhisper-title.test.js +18 -0
- package/dist/lib/superwhisper-title.test.js.map +1 -0
- package/dist/lib/targets.d.ts +134 -10
- package/dist/lib/targets.js +962 -258
- package/dist/lib/targets.js.map +1 -1
- package/dist/lib/template-file.d.ts +4 -0
- package/dist/lib/template-file.js.map +1 -1
- package/dist/lib/template-lifecycle.d.ts +217 -0
- package/dist/lib/template-lifecycle.js +433 -0
- package/dist/lib/template-lifecycle.js.map +1 -0
- package/dist/lib/template-steps.d.ts +88 -0
- package/dist/lib/template-steps.js +118 -0
- package/dist/lib/template-steps.js.map +1 -0
- package/dist/lib/time-ago.d.ts +2 -0
- package/dist/lib/time-ago.js +15 -0
- package/dist/lib/time-ago.js.map +1 -0
- package/dist/utils/logger.js +5 -2
- package/dist/utils/logger.js.map +1 -1
- package/package.json +23 -17
- package/skills/README.md +12 -10
- package/skills/agent-os/SKILL.md +214 -99
- package/skills/manifest.json +1 -1
- package/skills/onboard/SKILL.md +55 -26
- package/skills/synap/README.md +5 -8
- package/skills/synap/SKILL.md +1086 -283
- package/skills/synap/_order.txt +7 -0
- package/skills/synap/_skill.yaml +1 -1
- package/skills/synap/automations.md +15 -0
- package/skills/synap/capture.md +5 -0
- package/skills/synap/cli-operations.md +24 -18
- package/skills/synap/concepts.md +28 -0
- package/skills/synap/content-os.md +10 -1
- package/skills/synap/creative-loop.md +15 -10
- package/skills/synap/crm.md +21 -52
- package/skills/synap/document-embeds.md +141 -47
- package/skills/synap/escalation-ladder.md +20 -10
- package/skills/synap/focus-sessions.md +47 -21
- package/skills/synap/from-intent.md +142 -0
- package/skills/synap/governance-rules.md +4 -4
- package/skills/synap/governance.md +10 -7
- package/skills/synap/hand-off.md +33 -0
- package/skills/synap/inline-patterns.md +15 -7
- package/skills/synap/lenses.md +33 -15
- package/skills/synap/linking.md +41 -40
- package/skills/synap/mcp-remote-servers.md +64 -0
- package/skills/synap/mental-model.md +17 -15
- package/skills/synap/operating-mode-rules.md +1 -1
- package/skills/synap/processes.md +118 -0
- package/skills/synap/quick-reference.md +5 -1
- package/skills/synap/reading.md +3 -1
- package/skills/synap/reflexes.md +12 -42
- package/skills/synap/viewframe-cells.md +38 -5
- package/skills/synap/work-flow.md +1 -1
- package/skills/synap/work-model.md +96 -0
- package/skills/synap/worked-examples.md +4 -5
- package/skills/synap/workspace-design.md +14 -10
- package/skills/synap/writes.md +97 -24
- package/skills/synap/writing-titles.md +63 -0
- package/skills/synap-app/SKILL.md +2 -2
- package/skills/synap-app/_skill.yaml +1 -1
- package/skills/synap-app/install-commands.md +1 -1
- package/skills/synap-design/SKILL.md +474 -0
- package/skills/synap-design/_order.txt +4 -0
- package/skills/synap-design/_skill.yaml +21 -0
- package/skills/synap-design/loop.md +134 -0
- package/skills/synap-design/overview.md +44 -0
- package/skills/synap-design/principles.md +130 -0
- package/skills/synap-design/system.md +133 -0
- package/skills/synap-market/SKILL.md +306 -16
- package/skills/synap-market/_skill.yaml +1 -1
- package/skills/synap-market/author-and-publish.md +145 -8
- package/skills/synap-market/governance-and-catalog.md +7 -0
- package/skills/synap-market/install.md +79 -1
- package/skills/synap-market/overview.md +74 -6
- package/skills/synap-schema/SKILL.md +172 -10
- package/skills/synap-schema/_order.txt +2 -0
- package/skills/synap-schema/_skill.yaml +4 -2
- package/skills/synap-schema/common-mistakes.md +4 -2
- package/skills/synap-schema/discover-profiles.md +1 -1
- package/skills/synap-schema/entity-scope.md +15 -3
- package/skills/synap-schema/extend-first.md +29 -0
- package/skills/synap-schema/extend-vs-create.md +1 -1
- package/skills/synap-schema/intent-vocabulary-ssot.md +111 -0
- package/skills/synap-schema/property-types.md +1 -1
- package/skills/synap-schema/relations.md +1 -1
- package/skills/synap-ui/SKILL.md +19 -12
- package/skills/synap-ui/_skill.yaml +1 -1
- package/skills/synap-ui/ai-companion.md +1 -1
- package/skills/synap-ui/arranging-bento.md +2 -0
- package/skills/synap-ui/bento-layouts.md +10 -10
- package/skills/synap-ui/bento-recipes.md +313 -543
- package/skills/synap-ui/four-builds.md +5 -0
- package/skills/synap-ui/view-types.md +2 -2
- package/skills/synap-ui/widget-catalog.md +22 -278
- package/templates/automations/bookmark-enrichment.automation.json +290 -13
- package/templates/automations/url-bookmark-capture.automation.json +73 -11
- package/templates/skills/authoring-playbooks/SKILL.md +6 -3
- package/templates/skills/authoring-playbooks/reference/stages-contract.md +15 -0
- package/templates/skills/authoring-playbooks/reference/worked-example.md +3 -0
- package/dist/commands/infra.d.ts +0 -21
- package/dist/commands/infra.js +0 -262
- package/dist/commands/infra.js.map +0 -1
- package/dist/commands/template.d.ts +0 -42
- package/dist/commands/template.js +0 -191
- package/dist/commands/template.js.map +0 -1
- package/dist/lib/browser-auth.d.ts +0 -35
- package/dist/lib/browser-auth.js +0 -170
- package/dist/lib/browser-auth.js.map +0 -1
- package/dist/lib/openclaw.d.ts +0 -32
- package/dist/lib/openclaw.js +0 -164
- package/dist/lib/openclaw.js.map +0 -1
- package/dist/lib/seed.d.ts +0 -13
- package/dist/lib/seed.js +0 -135
- package/dist/lib/seed.js.map +0 -1
- package/node_modules/@synap/hub-rest-client/dist/index.cjs +0 -1261
- package/node_modules/@synap/hub-rest-client/dist/index.d.cts +0 -1647
- package/node_modules/@synap/hub-rest-client/dist/index.d.ts +0 -1647
- package/node_modules/@synap/hub-rest-client/dist/index.js +0 -1231
- package/node_modules/@synap/hub-rest-client/package.json +0 -45
- package/node_modules/@synap/hub-rest-client/src/client.ts +0 -1631
- package/node_modules/@synap/hub-rest-client/src/errors.ts +0 -30
- package/node_modules/@synap/hub-rest-client/src/index.ts +0 -153
- package/node_modules/@synap/hub-rest-client/src/setup.ts +0 -133
- package/node_modules/@synap/hub-rest-client/src/types.ts +0 -1299
|
@@ -5,11 +5,72 @@
|
|
|
5
5
|
* feed: GET /runs?flowType=&flowId=&limit=
|
|
6
6
|
* detail: GET /runs/:id?flowType=
|
|
7
7
|
*
|
|
8
|
-
* No args → the recent run feed across
|
|
9
|
-
* With a run id → that run's
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* No args → the recent run feed across every ledger.
|
|
9
|
+
* With a run id OR a flow name → that run's per-NODE story: each node's status,
|
|
10
|
+
* timing, error, resolved inputs and output (an automation run), or the capture
|
|
11
|
+
* decision + trace events with their actionable fixHint. The flowType the detail
|
|
12
|
+
* door needs is READ off the feed, never guessed. `--json` prints the raw payload.
|
|
12
13
|
*/
|
|
14
|
+
/**
|
|
15
|
+
* The ledgers `GET /runs` merges. MUST stay in sync with the pod's
|
|
16
|
+
* `FlowTypeSchema` (synap-backend `routers/hub-protocol/rest/runs.ts`) — this
|
|
17
|
+
* list was missing `capability` and `chat`, so the feed listed ids the detail
|
|
18
|
+
* door was never asked about.
|
|
19
|
+
*/
|
|
20
|
+
type FlowType = "automation" | "playbook" | "capture" | "capability" | "session" | "chat";
|
|
21
|
+
interface UnifiedRun {
|
|
22
|
+
id: string;
|
|
23
|
+
flowType: FlowType;
|
|
24
|
+
flowName: string;
|
|
25
|
+
status: string;
|
|
26
|
+
startedAt: string;
|
|
27
|
+
completedAt: string | null;
|
|
28
|
+
summary: string | null;
|
|
29
|
+
error: string | null;
|
|
30
|
+
channelId: string | null;
|
|
31
|
+
}
|
|
32
|
+
interface RunActivityItem {
|
|
33
|
+
id: string;
|
|
34
|
+
at: string | null;
|
|
35
|
+
kind: string;
|
|
36
|
+
status: string | null;
|
|
37
|
+
label: string;
|
|
38
|
+
hint: string | null;
|
|
39
|
+
/**
|
|
40
|
+
* Per-node execution payload. For an automation step the pod sends
|
|
41
|
+
* `{ nodeId, nodeLabel, nodeType, commandId, errorMessage, startedAt,
|
|
42
|
+
* completedAt, resolvedInputs, output }` — the actual "what happened in this
|
|
43
|
+
* node" the whole command exists for. Other ledgers send their own shape or
|
|
44
|
+
* nothing, so it is read defensively.
|
|
45
|
+
*/
|
|
46
|
+
detail?: Record<string, unknown> | null;
|
|
47
|
+
}
|
|
48
|
+
export type RunLookup = {
|
|
49
|
+
kind: "match";
|
|
50
|
+
run: UnifiedRun;
|
|
51
|
+
} | {
|
|
52
|
+
kind: "ambiguous";
|
|
53
|
+
candidates: UnifiedRun[];
|
|
54
|
+
} | {
|
|
55
|
+
kind: "none";
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Resolve a user-typed argument against the run feed.
|
|
59
|
+
*
|
|
60
|
+
* The feed is the ONE listing door and it already carries each run's `flowType`,
|
|
61
|
+
* so the id space a run belongs to is READ, never guessed. `arg` may be a run id
|
|
62
|
+
* or a flow name — exact name, then unambiguous prefix, then substring. Several
|
|
63
|
+
* runs of the SAME flow collapse to the newest (the feed is newest-first); several
|
|
64
|
+
* DISTINCT flows stay ambiguous so the caller can list them instead of guessing.
|
|
65
|
+
*/
|
|
66
|
+
export declare function resolveRunTarget(runs: UnifiedRun[], arg: string): RunLookup;
|
|
67
|
+
/**
|
|
68
|
+
* One node of the run. This is where failures actually live — a failed step, an
|
|
69
|
+
* empty `ai.generate` return, an unresolved template reference — so the node's
|
|
70
|
+
* status, timing, error, resolved inputs and output all print here rather than
|
|
71
|
+
* only in `--json`.
|
|
72
|
+
*/
|
|
73
|
+
export declare function renderNode(a: RunActivityItem): void;
|
|
13
74
|
export declare function diagnose(runId: string | undefined, opts: {
|
|
14
75
|
flow?: string;
|
|
15
76
|
flowId?: string;
|
|
@@ -18,3 +79,4 @@ export declare function diagnose(runId: string | undefined, opts: {
|
|
|
18
79
|
podUrl?: string;
|
|
19
80
|
apiKey?: string;
|
|
20
81
|
}): Promise<void>;
|
|
82
|
+
export {};
|
|
@@ -5,15 +5,23 @@
|
|
|
5
5
|
* feed: GET /runs?flowType=&flowId=&limit=
|
|
6
6
|
* detail: GET /runs/:id?flowType=
|
|
7
7
|
*
|
|
8
|
-
* No args → the recent run feed across
|
|
9
|
-
* With a run id → that run's
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* No args → the recent run feed across every ledger.
|
|
9
|
+
* With a run id OR a flow name → that run's per-NODE story: each node's status,
|
|
10
|
+
* timing, error, resolved inputs and output (an automation run), or the capture
|
|
11
|
+
* decision + trace events with their actionable fixHint. The flowType the detail
|
|
12
|
+
* door needs is READ off the feed, never guessed. `--json` prints the raw payload.
|
|
12
13
|
*/
|
|
13
14
|
import chalk from "chalk";
|
|
14
15
|
import { log } from "../utils/logger.js";
|
|
15
|
-
import { resolveHubConfig, hubGet, renderHubError } from "../lib/hub-client.js";
|
|
16
|
-
const FLOW_TYPES = [
|
|
16
|
+
import { resolveHubConfig, hubGet, renderHubError, HubError, } from "../lib/hub-client.js";
|
|
17
|
+
const FLOW_TYPES = [
|
|
18
|
+
"automation",
|
|
19
|
+
"playbook",
|
|
20
|
+
"capture",
|
|
21
|
+
"capability",
|
|
22
|
+
"session",
|
|
23
|
+
"chat",
|
|
24
|
+
];
|
|
17
25
|
/** Colour a status token by lifecycle. */
|
|
18
26
|
function statusColor(status) {
|
|
19
27
|
switch (status) {
|
|
@@ -40,32 +48,248 @@ function renderFeed(runs) {
|
|
|
40
48
|
if (r.summary)
|
|
41
49
|
console.log(` ${chalk.dim(r.summary)}`);
|
|
42
50
|
}
|
|
43
|
-
log.dim(`\nDiagnose one: synap diagnose <id
|
|
51
|
+
log.dim(`\nDiagnose one: synap diagnose <id|name>`);
|
|
44
52
|
}
|
|
45
|
-
|
|
53
|
+
// ── Run lookup: id OR name (no flowType guessing) ────────────────────────────
|
|
54
|
+
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
55
|
+
function looksLikeId(arg) {
|
|
56
|
+
return UUID_RE.test(arg.trim());
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Resolve a user-typed argument against the run feed.
|
|
60
|
+
*
|
|
61
|
+
* The feed is the ONE listing door and it already carries each run's `flowType`,
|
|
62
|
+
* so the id space a run belongs to is READ, never guessed. `arg` may be a run id
|
|
63
|
+
* or a flow name — exact name, then unambiguous prefix, then substring. Several
|
|
64
|
+
* runs of the SAME flow collapse to the newest (the feed is newest-first); several
|
|
65
|
+
* DISTINCT flows stay ambiguous so the caller can list them instead of guessing.
|
|
66
|
+
*/
|
|
67
|
+
export function resolveRunTarget(runs, arg) {
|
|
68
|
+
const raw = arg.trim();
|
|
69
|
+
const byId = runs.find((r) => r.id === raw);
|
|
70
|
+
if (byId)
|
|
71
|
+
return { kind: "match", run: byId };
|
|
72
|
+
const q = raw.toLowerCase();
|
|
73
|
+
if (!q)
|
|
74
|
+
return { kind: "none" };
|
|
75
|
+
const name = (r) => (r.flowName ?? "").toLowerCase();
|
|
76
|
+
const exact = runs.filter((r) => name(r) === q);
|
|
77
|
+
const prefix = runs.filter((r) => name(r).startsWith(q));
|
|
78
|
+
const substr = runs.filter((r) => name(r).includes(q));
|
|
79
|
+
const pool = exact.length ? exact : prefix.length ? prefix : substr;
|
|
80
|
+
if (pool.length === 0)
|
|
81
|
+
return { kind: "none" };
|
|
82
|
+
// Group by the FLOW (type + name) — many runs of one automation is not
|
|
83
|
+
// ambiguity, two different automations is.
|
|
84
|
+
const groups = new Map();
|
|
85
|
+
for (const r of pool) {
|
|
86
|
+
const key = `${r.flowType}:${name(r)}`;
|
|
87
|
+
const g = groups.get(key);
|
|
88
|
+
if (g)
|
|
89
|
+
g.push(r);
|
|
90
|
+
else
|
|
91
|
+
groups.set(key, [r]);
|
|
92
|
+
}
|
|
93
|
+
if (groups.size === 1)
|
|
94
|
+
return { kind: "match", run: pool[0] };
|
|
95
|
+
return {
|
|
96
|
+
kind: "ambiguous",
|
|
97
|
+
candidates: [...groups.values()].map((g) => g[0]),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Last-resort id lookup when the run is older than the feed window (or lives in
|
|
102
|
+
* a ledger the merged feed omits — a completed `chat` turn). Walks the SAME
|
|
103
|
+
* detail door once per flow type; a 404 just means "not this id space".
|
|
104
|
+
*/
|
|
105
|
+
async function probeFlowTypes(id, cfg, hint) {
|
|
106
|
+
const order = hint
|
|
107
|
+
? [hint, ...FLOW_TYPES.filter((f) => f !== hint)]
|
|
108
|
+
: FLOW_TYPES;
|
|
109
|
+
for (const flowType of order) {
|
|
110
|
+
try {
|
|
111
|
+
const detail = (await hubGet(`/runs/${id}`, { flowType }, cfg));
|
|
112
|
+
if (detail?.run)
|
|
113
|
+
return { detail, flowType };
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
if (err instanceof HubError && err.status === 404)
|
|
117
|
+
continue;
|
|
118
|
+
throw err;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
// ── Detail rendering ─────────────────────────────────────────────────────────
|
|
124
|
+
/** A JSON value, one line, capped so a large payload never floods the terminal. */
|
|
125
|
+
function preview(value, cap = 400) {
|
|
126
|
+
if (value === null || value === undefined)
|
|
127
|
+
return null;
|
|
128
|
+
if (typeof value === "object" && Object.keys(value).length === 0)
|
|
129
|
+
return null;
|
|
130
|
+
let json;
|
|
131
|
+
try {
|
|
132
|
+
json = JSON.stringify(value);
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
if (!json || json === "{}" || json === "[]")
|
|
138
|
+
return null;
|
|
139
|
+
return json.length > cap ? `${json.slice(0, cap)}… (--json for all)` : json;
|
|
140
|
+
}
|
|
141
|
+
function str(o, k) {
|
|
142
|
+
const v = o[k];
|
|
143
|
+
return typeof v === "string" && v ? v : null;
|
|
144
|
+
}
|
|
145
|
+
/** Human duration from a step's own start/end stamps. */
|
|
146
|
+
function duration(o) {
|
|
147
|
+
const a = str(o, "startedAt");
|
|
148
|
+
const b = str(o, "completedAt");
|
|
149
|
+
if (!a || !b)
|
|
150
|
+
return null;
|
|
151
|
+
const ms = Date.parse(b) - Date.parse(a);
|
|
152
|
+
if (!Number.isFinite(ms) || ms < 0)
|
|
153
|
+
return null;
|
|
154
|
+
return ms >= 1000 ? `${(ms / 1000).toFixed(1)}s` : `${ms}ms`;
|
|
155
|
+
}
|
|
156
|
+
function num(o, k) {
|
|
157
|
+
const v = o[k];
|
|
158
|
+
return typeof v === "number" && Number.isFinite(v) ? v : null;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* The AI telemetry suffix for a node line — the whole reason this command
|
|
162
|
+
* exists in its current form.
|
|
163
|
+
*
|
|
164
|
+
* On 2026-08-03 an `ai.generate` step ran 24.5s, returned `""`, and reported
|
|
165
|
+
* `completed`. `diagnose` printed `out (empty)` and could say nothing more, so
|
|
166
|
+
* finding out WHY meant SSH-ing to the IS container and grepping unstructured
|
|
167
|
+
* logs by wall-clock timestamp. `finishReason` is the field that answers it, and
|
|
168
|
+
* the token pair says whether the prompt was even read.
|
|
169
|
+
*
|
|
170
|
+
* Renders as: `finish=length · tokens 4210→0`. Emits nothing when the step made
|
|
171
|
+
* no IS generation, when the run predates migration 0224, or against an IS build
|
|
172
|
+
* that predates the seam telemetry change — never a fabricated 0.
|
|
173
|
+
*
|
|
174
|
+
* Any finish reason other than `stop` is the FINDING, so it prints yellow.
|
|
175
|
+
*/
|
|
176
|
+
function aiTelemetry(d) {
|
|
177
|
+
const finish = str(d, "finishReason");
|
|
178
|
+
const tin = num(d, "tokensIn");
|
|
179
|
+
const tout = num(d, "tokensOut");
|
|
180
|
+
const bits = [];
|
|
181
|
+
if (finish)
|
|
182
|
+
bits.push(finish === "stop"
|
|
183
|
+
? chalk.dim(`finish=${finish}`)
|
|
184
|
+
: chalk.yellow(`finish=${finish}`));
|
|
185
|
+
if (tin !== null || tout !== null)
|
|
186
|
+
bits.push(chalk.dim(`tokens ${tin ?? "?"}→${tout ?? "?"}`));
|
|
187
|
+
return bits.length > 0 ? bits.join(chalk.dim(" · ")) : null;
|
|
188
|
+
}
|
|
189
|
+
function stepStatus(status) {
|
|
190
|
+
switch (status) {
|
|
191
|
+
case "completed":
|
|
192
|
+
return chalk.green("✓ completed");
|
|
193
|
+
case "failed":
|
|
194
|
+
return chalk.red("✗ failed");
|
|
195
|
+
case "running":
|
|
196
|
+
return chalk.yellow("· running");
|
|
197
|
+
case "skipped":
|
|
198
|
+
return chalk.dim("– skipped");
|
|
199
|
+
default:
|
|
200
|
+
return chalk.dim(status ?? "?");
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* One node of the run. This is where failures actually live — a failed step, an
|
|
205
|
+
* empty `ai.generate` return, an unresolved template reference — so the node's
|
|
206
|
+
* status, timing, error, resolved inputs and output all print here rather than
|
|
207
|
+
* only in `--json`.
|
|
208
|
+
*/
|
|
209
|
+
export function renderNode(a) {
|
|
210
|
+
const when = a.at ? chalk.dim(a.at.slice(11, 19)) : chalk.dim("··:··:··");
|
|
211
|
+
const d = (a.detail ?? {});
|
|
212
|
+
const isStep = a.kind === "step";
|
|
213
|
+
// AI decision/trace rows carry the WHY — highlight them (emerald = AI accent).
|
|
214
|
+
const kindTag = a.kind === "capture_trace" || a.kind === "ai_decision"
|
|
215
|
+
? chalk.green(a.kind)
|
|
216
|
+
: chalk.dim(a.kind);
|
|
217
|
+
const head = isStep ? stepStatus(a.status) : kindTag;
|
|
218
|
+
const dur = duration(d);
|
|
219
|
+
console.log(` ${when} ${head} ${chalk.bold(a.label)}${dur ? chalk.dim(` ${dur}`) : ""}`);
|
|
220
|
+
const nodeId = str(d, "nodeId");
|
|
221
|
+
const nodeType = str(d, "nodeType");
|
|
222
|
+
const commandId = str(d, "commandId");
|
|
223
|
+
if (nodeId || nodeType || commandId) {
|
|
224
|
+
const bits = [
|
|
225
|
+
nodeId ? `node ${nodeId}` : null,
|
|
226
|
+
nodeType,
|
|
227
|
+
commandId ? `command ${commandId}` : null,
|
|
228
|
+
].filter(Boolean);
|
|
229
|
+
console.log(` ${chalk.dim(bits.join(" · "))}`);
|
|
230
|
+
}
|
|
231
|
+
const err = str(d, "errorMessage");
|
|
232
|
+
if (err)
|
|
233
|
+
console.log(` ${chalk.red("error")} ${err}`);
|
|
234
|
+
// `hint` duplicates errorMessage for automation steps — don't print it twice.
|
|
235
|
+
if (a.hint && a.hint !== err)
|
|
236
|
+
console.log(` ${chalk.green("→ " + a.hint)}`);
|
|
237
|
+
const inputs = preview(d.resolvedInputs);
|
|
238
|
+
if (inputs)
|
|
239
|
+
console.log(` ${chalk.dim("in ")} ${inputs}`);
|
|
240
|
+
// AI telemetry rides the SAME line as the output, so an empty generation reads
|
|
241
|
+
// as one sentence: `out (empty) · finish=length · tokens 4210→0`.
|
|
242
|
+
const ai = aiTelemetry(d);
|
|
243
|
+
const aiSuffix = ai ? `${chalk.dim(" · ")}${ai}` : "";
|
|
244
|
+
// An `ai.generate` that produced nothing returns the EMPTY STRING, which
|
|
245
|
+
// `preview` faithfully renders as the two characters `""` — technically
|
|
246
|
+
// honest, but it read as a value rather than as the finding it is. Route it
|
|
247
|
+
// to the `(empty)` branch alongside `{}`/`[]`/null. Deliberately checked HERE
|
|
248
|
+
// and not inside `preview`, which also renders the `in` line where a literal
|
|
249
|
+
// `""` input is a legitimate value worth showing.
|
|
250
|
+
const rawOut = d.output;
|
|
251
|
+
const outputIsEmpty = rawOut === null ||
|
|
252
|
+
rawOut === undefined ||
|
|
253
|
+
(typeof rawOut === "string" && rawOut.trim() === "");
|
|
254
|
+
const output = outputIsEmpty ? null : preview(rawOut);
|
|
255
|
+
if (output)
|
|
256
|
+
console.log(` ${chalk.dim("out")} ${output}${aiSuffix}`);
|
|
257
|
+
else if (isStep && "output" in d)
|
|
258
|
+
// An empty return is a real finding, not a blank line. Shown on a FAILED
|
|
259
|
+
// step too — an empty generation now fails the step (see generateViaIS), and
|
|
260
|
+
// that is exactly the row an operator is reading.
|
|
261
|
+
console.log(` ${chalk.dim("out")} ${chalk.yellow("(empty)")}${aiSuffix}`);
|
|
262
|
+
else if (ai)
|
|
263
|
+
// A FAILED AI step has no output at all — but its finish reason is exactly
|
|
264
|
+
// what the operator came for, so it still prints.
|
|
265
|
+
console.log(` ${chalk.dim("ai ")} ${ai}`);
|
|
266
|
+
}
|
|
267
|
+
function renderDetail(detail) {
|
|
268
|
+
const { run, activity } = detail;
|
|
46
269
|
log.heading(`${run.flowType} run — ${run.flowName}`);
|
|
47
270
|
console.log(` status ${statusColor(run.status)}`);
|
|
271
|
+
console.log(` id ${chalk.dim(run.id)}`);
|
|
48
272
|
if (run.summary)
|
|
49
273
|
log.info(run.summary);
|
|
50
274
|
if (run.error)
|
|
51
275
|
console.log(` ${chalk.red("error")} ${run.error}`);
|
|
52
276
|
if (run.channelId)
|
|
53
277
|
log.dim(` channel ${run.channelId} (open it for the full message story)`);
|
|
54
|
-
|
|
278
|
+
const trigger = preview(detail.trigger?.payload, 200);
|
|
279
|
+
if (trigger)
|
|
280
|
+
console.log(` trigger ${chalk.dim(trigger)}`);
|
|
281
|
+
log.heading("Nodes");
|
|
55
282
|
if (activity.length === 0) {
|
|
56
283
|
log.dim("(no recorded activity — the story may live in the run's channel)");
|
|
57
|
-
return;
|
|
58
284
|
}
|
|
59
|
-
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
console.log(` ${
|
|
67
|
-
if (a.hint)
|
|
68
|
-
console.log(` ${chalk.green("→ " + a.hint)}`);
|
|
285
|
+
else {
|
|
286
|
+
for (const a of activity)
|
|
287
|
+
renderNode(a);
|
|
288
|
+
}
|
|
289
|
+
const out = preview(detail.outputSummary, 600);
|
|
290
|
+
if (out) {
|
|
291
|
+
log.heading("Output");
|
|
292
|
+
console.log(` ${chalk.dim(out)}`);
|
|
69
293
|
}
|
|
70
294
|
}
|
|
71
295
|
/**
|
|
@@ -145,21 +369,54 @@ export async function diagnose(runId, opts) {
|
|
|
145
369
|
log.error(`--flow must be one of: ${FLOW_TYPES.join(", ")}`);
|
|
146
370
|
process.exit(1);
|
|
147
371
|
}
|
|
148
|
-
// ── Detail: a specific run's
|
|
372
|
+
// ── Detail: a specific run's nodes ─────────────────────────────────────────
|
|
373
|
+
// The id space differs per ledger, so the detail door needs a flowType. It is
|
|
374
|
+
// READ off the feed (the one listing door, which already carries it) or probed
|
|
375
|
+
// — NEVER defaulted, which is what made every non-capture id 404.
|
|
149
376
|
if (runId) {
|
|
150
|
-
|
|
151
|
-
//
|
|
152
|
-
|
|
153
|
-
const
|
|
377
|
+
let detail = null;
|
|
378
|
+
// Resolve id-or-name against the feed first: one call, and it is also what
|
|
379
|
+
// makes `synap diagnose "Generate report"` work.
|
|
380
|
+
const feedQuery = { limit: "100" };
|
|
381
|
+
if (flow)
|
|
382
|
+
feedQuery.flowType = flow;
|
|
383
|
+
let lookup = { kind: "none" };
|
|
384
|
+
try {
|
|
385
|
+
const feed = (await hubGet("/runs", feedQuery, cfg));
|
|
386
|
+
lookup = resolveRunTarget(feed.runs ?? [], runId);
|
|
387
|
+
}
|
|
388
|
+
catch (err) {
|
|
389
|
+
// A feed failure must not hide a perfectly good id — fall through to probe.
|
|
390
|
+
if (!looksLikeId(runId))
|
|
391
|
+
throw err;
|
|
392
|
+
}
|
|
393
|
+
if (lookup.kind === "ambiguous") {
|
|
394
|
+
log.error(`'${runId}' matches several flows — pick one:`);
|
|
395
|
+
for (const c of lookup.candidates) {
|
|
396
|
+
console.log(` ${chalk.cyan(c.flowType)} ${chalk.bold(c.flowName)} ${chalk.dim(c.id)}`);
|
|
397
|
+
}
|
|
398
|
+
process.exit(1);
|
|
399
|
+
}
|
|
400
|
+
if (lookup.kind === "match") {
|
|
401
|
+
const run = lookup.run;
|
|
402
|
+
detail = (await hubGet(`/runs/${run.id}`, { flowType: run.flowType }, cfg));
|
|
403
|
+
}
|
|
404
|
+
else if (looksLikeId(runId)) {
|
|
405
|
+
// Older than the feed window, or a ledger the merged feed omits.
|
|
406
|
+
const probed = await probeFlowTypes(runId, cfg, flow);
|
|
407
|
+
detail = probed?.detail ?? null;
|
|
408
|
+
}
|
|
154
409
|
if (opts.json) {
|
|
155
410
|
console.log(JSON.stringify(detail, null, 2));
|
|
156
411
|
return;
|
|
157
412
|
}
|
|
158
|
-
if (!detail) {
|
|
159
|
-
log.error(
|
|
413
|
+
if (!detail?.run) {
|
|
414
|
+
log.error(looksLikeId(runId)
|
|
415
|
+
? `No run with id '${runId}' in any flow (${FLOW_TYPES.join(", ")}).`
|
|
416
|
+
: `No run matching '${runId}'. Run \`synap diagnose\` to see the feed.`);
|
|
160
417
|
process.exit(1);
|
|
161
418
|
}
|
|
162
|
-
renderDetail(detail
|
|
419
|
+
renderDetail(detail);
|
|
163
420
|
return;
|
|
164
421
|
}
|
|
165
422
|
// ── Feed: recent runs across flows ─────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../../src/commands/diagnose.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../../src/commands/diagnose.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/doc.d.ts
CHANGED
|
@@ -8,13 +8,15 @@
|
|
|
8
8
|
* synap doc create --title "My Doc" --file ./notes.md [--open]
|
|
9
9
|
* echo "# Hello" | synap doc create --title "My Doc"
|
|
10
10
|
*
|
|
11
|
-
* synap doc update <id> --content "new body"
|
|
11
|
+
* synap doc update <id> --content "new body"
|
|
12
12
|
* synap doc update <id> --file ./notes.md
|
|
13
13
|
* echo "updated" | synap doc update <id>
|
|
14
|
+
* synap doc update <id> --section risks --section-title "Risks" --file ./risks.md
|
|
14
15
|
*
|
|
15
16
|
* API:
|
|
16
|
-
* POST /api/hub/documents
|
|
17
|
-
* PATCH /api/hub/documents/:id
|
|
17
|
+
* POST /api/hub/documents — { userId, workspaceId?, title, content?, type? }
|
|
18
|
+
* PATCH /api/hub/documents/:id — { userId, content, baseRevision? } (full replace)
|
|
19
|
+
* POST /api/hub/documents/:id/patch — { userId, ops, baseRevision? } (--section: one upsert_section op)
|
|
18
20
|
*/
|
|
19
21
|
export interface DocCreateOpts {
|
|
20
22
|
title: string;
|
|
@@ -29,7 +31,12 @@ export interface DocCreateOpts {
|
|
|
29
31
|
export interface DocUpdateOpts {
|
|
30
32
|
content?: string;
|
|
31
33
|
file?: string;
|
|
32
|
-
|
|
34
|
+
/** Write ONE section (by id) instead of replacing the whole body. */
|
|
35
|
+
section?: string;
|
|
36
|
+
/** The section's heading (required with --section). */
|
|
37
|
+
sectionTitle?: string;
|
|
38
|
+
/** The revision you read; the edit is refused if the document moved. */
|
|
39
|
+
baseRevision?: string;
|
|
33
40
|
open?: boolean;
|
|
34
41
|
json?: boolean;
|
|
35
42
|
podUrl?: string;
|
package/dist/commands/doc.js
CHANGED
|
@@ -8,13 +8,15 @@
|
|
|
8
8
|
* synap doc create --title "My Doc" --file ./notes.md [--open]
|
|
9
9
|
* echo "# Hello" | synap doc create --title "My Doc"
|
|
10
10
|
*
|
|
11
|
-
* synap doc update <id> --content "new body"
|
|
11
|
+
* synap doc update <id> --content "new body"
|
|
12
12
|
* synap doc update <id> --file ./notes.md
|
|
13
13
|
* echo "updated" | synap doc update <id>
|
|
14
|
+
* synap doc update <id> --section risks --section-title "Risks" --file ./risks.md
|
|
14
15
|
*
|
|
15
16
|
* API:
|
|
16
|
-
* POST /api/hub/documents
|
|
17
|
-
* PATCH /api/hub/documents/:id
|
|
17
|
+
* POST /api/hub/documents — { userId, workspaceId?, title, content?, type? }
|
|
18
|
+
* PATCH /api/hub/documents/:id — { userId, content, baseRevision? } (full replace)
|
|
19
|
+
* POST /api/hub/documents/:id/patch — { userId, ops, baseRevision? } (--section: one upsert_section op)
|
|
18
20
|
*/
|
|
19
21
|
import { readFileSync } from "fs";
|
|
20
22
|
import { log } from "../utils/logger.js";
|
|
@@ -146,17 +148,42 @@ export async function docUpdate(documentId, opts) {
|
|
|
146
148
|
const cfg = await resolveHubConfig(opts);
|
|
147
149
|
const userId = await resolveUserId(cfg);
|
|
148
150
|
const content = await resolveContent(opts.content, opts.file);
|
|
149
|
-
if (content === undefined
|
|
150
|
-
log.error("Provide --content, --file, or pipe stdin to supply new content.
|
|
151
|
-
"Title-only updates require --content as well (backend limitation).");
|
|
151
|
+
if (content === undefined) {
|
|
152
|
+
log.error("Provide --content, --file, or pipe stdin to supply new content.");
|
|
152
153
|
process.exit(1);
|
|
153
154
|
}
|
|
154
|
-
|
|
155
|
-
if (
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
155
|
+
let baseRevision;
|
|
156
|
+
if (opts.baseRevision !== undefined) {
|
|
157
|
+
baseRevision = Number(opts.baseRevision);
|
|
158
|
+
if (!Number.isInteger(baseRevision) || baseRevision < 0) {
|
|
159
|
+
log.error("--base-revision must be a whole number (the `revision` a read returned).");
|
|
160
|
+
process.exit(1);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (opts.section !== undefined && !opts.sectionTitle) {
|
|
164
|
+
log.error("--section needs --section-title (the section's heading).");
|
|
165
|
+
process.exit(1);
|
|
166
|
+
}
|
|
167
|
+
// --section writes ONE section through the patch door; otherwise the
|
|
168
|
+
// content replaces the whole body (PATCH, an alias of the same door).
|
|
169
|
+
const res = (opts.section !== undefined
|
|
170
|
+
? await hubPost(`/documents/${documentId}/patch`, {
|
|
171
|
+
userId,
|
|
172
|
+
ops: [
|
|
173
|
+
{
|
|
174
|
+
op: "upsert_section",
|
|
175
|
+
id: opts.section,
|
|
176
|
+
title: opts.sectionTitle,
|
|
177
|
+
body: content,
|
|
178
|
+
},
|
|
179
|
+
],
|
|
180
|
+
...(baseRevision !== undefined ? { baseRevision } : {}),
|
|
181
|
+
}, cfg)
|
|
182
|
+
: await hubPatch(`/documents/${documentId}`, {
|
|
183
|
+
userId,
|
|
184
|
+
content,
|
|
185
|
+
...(baseRevision !== undefined ? { baseRevision } : {}),
|
|
186
|
+
}, cfg));
|
|
160
187
|
if (opts.json) {
|
|
161
188
|
console.log(JSON.stringify(res, null, 2));
|
|
162
189
|
return;
|
|
@@ -173,8 +200,6 @@ export async function docUpdate(documentId, opts) {
|
|
|
173
200
|
return;
|
|
174
201
|
}
|
|
175
202
|
log.success(`Document updated: ${documentId.slice(0, 8)}…`);
|
|
176
|
-
if (opts.title)
|
|
177
|
-
log.dim(` title: ${opts.title}`);
|
|
178
203
|
if (opts.open) {
|
|
179
204
|
await openInBrowser({ kind: "document", id: documentId });
|
|
180
205
|
}
|
package/dist/commands/doc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc.js","sourceRoot":"","sources":["../../src/commands/doc.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"doc.js","sourceRoot":"","sources":["../../src/commands/doc.ts"],"names":[],"mappings":"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"}
|