@synap-core/cli 1.11.0 → 1.13.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/LICENSE +21 -0
- package/README.md +40 -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 +32 -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 +524 -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 +116 -66
- package/dist/commands/automation.js.map +1 -1
- package/dist/commands/box.d.ts +42 -0
- package/dist/commands/box.js +89 -0
- package/dist/commands/box.js.map +1 -0
- package/dist/commands/bridge-setup.d.ts +14 -1
- package/dist/commands/bridge-setup.js +395 -129
- 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 +3 -1
- package/dist/commands/capability.js +249 -176
- package/dist/commands/capability.js.map +1 -1
- package/dist/commands/catalog.d.ts +275 -0
- package/dist/commands/catalog.js +481 -0
- package/dist/commands/catalog.js.map +1 -0
- package/dist/commands/cell.d.ts +155 -8
- package/dist/commands/cell.js +416 -40
- package/dist/commands/cell.js.map +1 -1
- package/dist/commands/centrality.js +1 -13
- package/dist/commands/centrality.js.map +1 -1
- package/dist/commands/close-questions.d.ts +27 -0
- package/dist/commands/close-questions.js +49 -0
- package/dist/commands/close-questions.js.map +1 -0
- package/dist/commands/close-questions.test.d.ts +1 -0
- package/dist/commands/close-questions.test.js +52 -0
- package/dist/commands/close-questions.test.js.map +1 -0
- package/dist/commands/connect.d.ts +36 -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 +79 -44
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/data-extra.d.ts +34 -0
- package/dist/commands/data-extra.js +203 -25
- package/dist/commands/data-extra.js.map +1 -1
- package/dist/commands/data.d.ts +120 -2
- package/dist/commands/data.js +295 -21
- 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 +133 -3
- package/dist/commands/doctor.js +761 -41
- 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/hooks.d.ts +19 -0
- package/dist/commands/hooks.js +70 -0
- package/dist/commands/hooks.js.map +1 -0
- package/dist/commands/import.d.ts +393 -13
- package/dist/commands/import.js +1150 -54
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/init.d.ts +34 -9
- package/dist/commands/init.js +481 -981
- 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 +121 -57
- package/dist/commands/knowledge.js.map +1 -1
- package/dist/commands/lens.d.ts +37 -1
- package/dist/commands/lens.js +194 -72
- 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/observe.category.test.d.ts +1 -0
- package/dist/commands/observe.category.test.js +59 -0
- package/dist/commands/observe.category.test.js.map +1 -0
- package/dist/commands/observe.d.ts +3 -0
- package/dist/commands/observe.js +7 -5
- package/dist/commands/observe.js.map +1 -1
- package/dist/commands/observe.title.test.d.ts +1 -0
- package/dist/commands/observe.title.test.js +37 -0
- package/dist/commands/observe.title.test.js.map +1 -0
- 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 +171 -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 +11 -1
- package/dist/commands/pods.js +129 -131
- 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 +579 -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-feed-wait.d.ts +48 -0
- package/dist/commands/session-feed-wait.js +261 -0
- package/dist/commands/session-feed-wait.js.map +1 -0
- package/dist/commands/session-post.d.ts +40 -0
- package/dist/commands/session-post.js +96 -0
- package/dist/commands/session-post.js.map +1 -0
- package/dist/commands/session-wait.d.ts +116 -0
- package/dist/commands/session-wait.js +224 -0
- package/dist/commands/session-wait.js.map +1 -0
- package/dist/commands/sessions.d.ts +54 -0
- package/dist/commands/sessions.js +501 -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-commands.d.ts +2 -0
- package/dist/commands/skills-commands.js +9 -1
- package/dist/commands/skills-commands.js.map +1 -1
- package/dist/commands/skills-commands.test.d.ts +1 -0
- package/dist/commands/skills-commands.test.js +57 -0
- package/dist/commands/skills-commands.test.js.map +1 -0
- 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 +6 -35
- 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 +112 -0
- package/dist/commands/tracks.js +543 -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 +30 -3
- package/dist/commands/whoami.js +186 -23
- package/dist/commands/whoami.js.map +1 -1
- package/dist/commands/worker-accounts.d.ts +149 -0
- package/dist/commands/worker-accounts.js +339 -0
- package/dist/commands/worker-accounts.js.map +1 -0
- package/dist/commands/worker-accounts.test.d.ts +1 -0
- package/dist/commands/worker-accounts.test.js +224 -0
- package/dist/commands/worker-accounts.test.js.map +1 -0
- package/dist/commands/worker.d.ts +331 -0
- package/dist/commands/worker.js +1067 -0
- package/dist/commands/worker.js.map +1 -0
- package/dist/commands/worker.test.d.ts +1 -0
- package/dist/commands/worker.test.js +427 -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 +1043 -186
- 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 +136 -0
- package/dist/lib/agent-door.js +429 -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 +17 -11
- package/dist/lib/auth.js +47 -64
- 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/box/egress.d.ts +82 -0
- package/dist/lib/box/egress.js +264 -0
- package/dist/lib/box/egress.js.map +1 -0
- package/dist/lib/box/evidence.d.ts +86 -0
- package/dist/lib/box/evidence.js +121 -0
- package/dist/lib/box/evidence.js.map +1 -0
- package/dist/lib/box/job-server.d.ts +72 -0
- package/dist/lib/box/job-server.js +246 -0
- package/dist/lib/box/job-server.js.map +1 -0
- package/dist/lib/box/provisioner.d.ts +83 -0
- package/dist/lib/box/provisioner.js +312 -0
- package/dist/lib/box/provisioner.js.map +1 -0
- package/dist/lib/box/proxmox.d.ts +112 -0
- package/dist/lib/box/proxmox.js +211 -0
- package/dist/lib/box/proxmox.js.map +1 -0
- package/dist/lib/box/wire.d.ts +98 -0
- package/dist/lib/box/wire.js +70 -0
- package/dist/lib/box/wire.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/client-header.test.d.ts +1 -0
- package/dist/lib/client-header.test.js +85 -0
- package/dist/lib/client-header.test.js.map +1 -0
- package/dist/lib/conversation-headers.d.ts +33 -0
- package/dist/lib/conversation-headers.js +69 -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 +144 -0
- package/dist/lib/credential-class.js +138 -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/goal-words.d.ts +38 -0
- package/dist/lib/goal-words.js +112 -0
- package/dist/lib/goal-words.js.map +1 -0
- package/dist/lib/hub-client.d.ts +57 -15
- package/dist/lib/hub-client.js +396 -82
- 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 +24 -0
- package/dist/lib/init-handoff.js +26 -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 +68 -0
- package/dist/lib/key-source.js +109 -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 +25 -0
- package/dist/lib/knowledge-title.js +47 -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 +49 -0
- package/dist/lib/mcp-bridge.js +180 -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 +118 -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/openclaw.js +3 -2
- package/dist/lib/openclaw.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-moved.d.ts +70 -0
- package/dist/lib/pod-moved.js +146 -0
- package/dist/lib/pod-moved.js.map +1 -0
- package/dist/lib/pod-reach.d.ts +39 -0
- package/dist/lib/pod-reach.js +117 -0
- package/dist/lib/pod-reach.js.map +1 -0
- package/dist/lib/pod-reach.test.d.ts +1 -0
- package/dist/lib/pod-reach.test.js +67 -0
- package/dist/lib/pod-reach.test.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 +74 -112
- package/dist/lib/pod.js +146 -415
- 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/register-claude-code-mcp.test.d.ts +1 -0
- package/dist/lib/register-claude-code-mcp.test.js +78 -0
- package/dist/lib/register-claude-code-mcp.test.js.map +1 -0
- package/dist/lib/review-credential.d.ts +119 -0
- package/dist/lib/review-credential.js +149 -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-feed.d.ts +185 -0
- package/dist/lib/session-feed.js +257 -0
- package/dist/lib/session-feed.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 +152 -10
- package/dist/lib/targets.js +974 -325
- 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/lib/wake-hook-settings.d.ts +57 -0
- package/dist/lib/wake-hook-settings.js +153 -0
- package/dist/lib/wake-hook-settings.js.map +1 -0
- package/dist/lib/wake-state.d.ts +65 -0
- package/dist/lib/wake-state.js +122 -0
- package/dist/lib/wake-state.js.map +1 -0
- package/dist/utils/logger.js +5 -2
- package/dist/utils/logger.js.map +1 -1
- package/package.json +26 -17
- package/skills/README.md +13 -11
- 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 +1149 -289
- 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/code-skills.md +70 -0
- package/skills/synap/concepts.md +36 -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 +143 -47
- package/skills/synap/escalation-ladder.md +20 -10
- package/skills/synap/focus-sessions.md +56 -21
- package/skills/synap/from-intent.md +158 -0
- package/skills/synap/governance-rules.md +5 -5
- 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 +34 -16
- package/skills/synap/linking.md +42 -41
- package/skills/synap/mcp-remote-servers.md +64 -0
- package/skills/synap/mental-model.md +17 -15
- package/skills/synap/operating-mode-rules.md +2 -2
- package/skills/synap/processes.md +118 -0
- package/skills/synap/quick-reference.md +7 -2
- 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 +110 -0
- package/skills/synap/worked-examples.md +4 -5
- package/skills/synap/workspace-design.md +15 -11
- package/skills/synap/writes.md +105 -25
- package/skills/synap/writing-titles.md +63 -0
- package/skills/synap-app/SKILL.md +149 -67
- package/skills/synap-app/_skill.yaml +1 -1
- package/skills/synap-app/creating-the-base-app.md +12 -7
- package/skills/synap-app/governance.md +27 -16
- package/skills/synap-app/install-commands.md +18 -9
- package/skills/synap-app/overview.md +16 -9
- package/skills/synap-app/using-the-sdk.md +75 -25
- 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/box/runner.py +206 -0
- 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/node_modules/@synap/hub-rest-client/dist/index.cjs +0 -1261
- package/node_modules/@synap/hub-rest-client/dist/index.d.cts +0 -1647
- package/node_modules/@synap/hub-rest-client/dist/index.d.ts +0 -1647
- package/node_modules/@synap/hub-rest-client/dist/index.js +0 -1231
- package/node_modules/@synap/hub-rest-client/package.json +0 -45
- package/node_modules/@synap/hub-rest-client/src/client.ts +0 -1631
- package/node_modules/@synap/hub-rest-client/src/errors.ts +0 -30
- package/node_modules/@synap/hub-rest-client/src/index.ts +0 -153
- package/node_modules/@synap/hub-rest-client/src/setup.ts +0 -133
- package/node_modules/@synap/hub-rest-client/src/types.ts +0 -1299
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAkB,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAExE,kFAAkF;AAElF,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAsClD,SAAS,cAAc,CAAC,CAAU;IAChC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,GAAG,iBAAiB,uBAAwB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,GAAG,iBAAiB,yBAAyB,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,CAAC,GAAG,GAA8B,CAAC;IAEzC,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,eAAe,iBAAiB,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CACtF,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,iBAAiB,uBAAuB,CAAC,CAAC;IAExE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,oBAAoB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAC5E,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,iBAAiB,0BAA0B,CAAC,CAAC;IAC1E,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,iBAAiB,8BAA8B,GAAG,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,GAAG,iBAAiB,8CAA8C,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,QAAQ,GAAiB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrD,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,+DAA+D,CAAC,CAAC;QAChG,CAAC;QACD,MAAM,EAAE,GAAG,CAA4B,CAAC;QACxC,MAAM,UAAU,GAAG,cAAc,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,2BAA2B,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,6CAA6C,CAAC,CAAC;QAC5F,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,GAAG,iBAAiB,+BAA+B,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,CAAC,GAAG,SAAoC,CAAC;IAC/C,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,gDAAgD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;IACrB,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,CAAC,GAAG,MAAiC,CAAC;IAC5C,MAAM,GAAG,GAAG;QACV,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1B,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC;QAChC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;KAC3C,CAAC;IACF,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC;QACV,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,IAAI;QACJ,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;QAC1C,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI;QAC1C,IAAI,EAAE,UAAU;QAChB,GAAG;QACH,QAAQ;QACR,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE;KAClC,CAAC;AACJ,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,iBAAiB,CAAC,CAAc;IAC9C,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG;QAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;IACjD,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM;QAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IAC1D,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW;QAAE,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;IAEzE,MAAM,GAAG,GAA4B,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAC5D,IAAI,CAAC,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;IACxB,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IAClB,IAAI,CAAC,CAAC,WAAW;QAAE,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;IACnD,IAAI,CAAC,CAAC,OAAO;QAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;IACvC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IAClB,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;IAChB,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC7F,GAAG,CAAC,MAAM,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;IAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe,OAAO,CAAC,GAAG,EAAE;IACvD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;AAC5C,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,YAAY,CAAC,OAAe,YAAY,EAAE;IACxD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,MAAM,iBAAiB,OAAO,IAAI,kCAAkC,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,CAAc;IACxD,eAAe,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/D,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAkB,EAClB,MAAuB;IAEvB,MAAM,GAAG,GAA2C,EAAE,CAAC;IACvD,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACnF,IAAI,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,wCAAwC,MAAM,CAAC,GAAG,CAAC,WAAW,sCAAsC,CACrG,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;IAC3F,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,WAAmD;IAEnD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjF,OAAO,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IAEnE,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,uBAAuB,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACjG,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,IAAI,GAAG,IAAI,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;;YAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAa;IACxD,yEAAyE;IACzE,8EAA8E;IAC9E,0EAA0E;IAC1E,IAAI,CAAC;QACH,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE;YAC9D,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,MAAM,CAAE,GAA4B,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CACN,mBAAmB,IAAI,yBAAyB,MAAM,CAAC,IAAI,EAAE,IAAK,GAAa,CAAC,OAAO,EAAE,CAC1F,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE;YACzD,KAAK,EAAE,KAAK,GAAG,IAAI;YACnB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,oBAAoB,IAAI,yBAA0B,GAAa,CAAC,OAAO,IAAI;YACzE,4FAA4F,CAC/F,CAAC;IACJ,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAC/B,MAAkB,EAClB,WAAmD,EACnD,OAAe,OAAO,CAAC,GAAG,EAAE;IAE5B,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,WAAW;YAAE,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvE,OAAO,qBAAqB,CAAC;IAC/B,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,CAAC;QACH,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,kBAAkB,OAAO,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,YAAY,CAAC;AACtD,CAAC;AA+BD;;;;GAIG;AACH,MAAM,OAAO,gBAAiB,SAAQ,aAAa;IACjD,uFAAuF;IACvF,KAAK,CAAC,WAAW,CAAC,GAAqB;QACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAyB,MAAM,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;QACrF,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,GAAG,CAAC,GAAG,CAAC;IACjB,CAAC;IAED,wFAAwF;IACxF,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,QAAsB;QACvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,MAAM,EACN,iBAAiB,kBAAkB,CAAC,QAAQ,CAAC,UAAU,EACvD,EAAE,QAAQ,EAAE,CACb,CAAC;QACF,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gGAAgG;IAChG,KAAK,CAAC,UAAU,CAAC,QAAgB;QAC/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,MAAM,EACN,iBAAiB,kBAAkB,CAAC,QAAQ,CAAC,MAAM,EACnD,EAAE,CACH,CAAC;QACF,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;CACF;AAED,kFAAkF;AAElF;;;;GAIG;AACH,KAAK,UAAU,qBAAqB,CAAC,MAAc;IACjD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAE5B,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC;IAC9E,IAAI,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,sBAAsB,EAAE;YACvD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE;YAC9D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC;YACZ,mFAAmF;YACnF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC;QAC/H,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,IAAI,CAAC,sBAAsB,MAAM,mBAAmB,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,qDAAqD;YACrD,MAAM,IAAI,KAAK,CACb,uCAAuC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,CACjG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,+DAA+D;IAC/D,MAAM,GAAG,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACrC,IAAI,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;QAAE,OAAO,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAEzE,MAAM,IAAI,KAAK,CACb,kBAAkB,MAAM,kCAAkC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,IAAI,MAAM,EAAE,CAC/F,CAAC;AACJ,CAAC;AAED,kFAAkF;AAElF,KAAK,UAAU,gBAAgB,CAC7B,MAAwB,EACxB,QAAqB,EACrB,IAAY;IAEZ,IAAI,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IACjC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;QACnC,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,IAAI,EAAE,QAAQ,CAAC,IAAI;KACpB,CAAC,CAAC;IACH,MAAM,OAAO,GAAgB,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;IAChE,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7B,GAAG,CAAC,OAAO,CAAC,eAAe,QAAQ,CAAC,IAAI,UAAU,GAAG,CAAC,SAAS,eAAe,iBAAiB,EAAE,CAAC,CAAC;IACnG,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kFAAkF;AAElF,KAAK,UAAU,GAAG,CAChB,EAAsB,EACtB,QAAgB,EAChB,GAAG,GAAG,EAAE;IAER,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtE,OAAO,MAAM,IAAI,GAAG,CAAC;AACvB,CAAC;AAED,kFAAkF;AAElF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,uGAAuG;YACrG,sCAAsC,iBAAiB,qCAAqC,CAC/F,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,QAAiC,CAAC;IACtC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,yBAAyB,iBAAiB,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,4DAA4D;IAC5D,MAAM,GAAG,GAAG,MAAM,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAE5D,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,IAAI,QAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAEvD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACnD,GAAG,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,UAAU,GAAG,MAAM,GAAG,CAC1B,EAAE,EACF,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,4CAA4C,EAC/E,GAAG,EAAE,UAAU,IAAI,EAAE,CACtB,CAAC;YACF,IAAI,CAAC,UAAU;gBAAE,MAAM;YACvB,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,uBAAuB,UAAU,GAAG,EAAE,GAAG,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;YAC5F,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,UAAU,IAAI,CAAC,CAAC;YACrF,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAEhF,QAAQ,GAAG;YACT,OAAO,EAAE,CAAC;YACV,EAAE,EAAE,QAAQ,EAAE,EAAE;YAChB,IAAI;YACJ,WAAW,EAAE,QAAQ,EAAE,WAAW;YAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,IAAI,IAAI;YAClC,IAAI,EAAE,UAAU;YAChB,GAAG;YACH,QAAQ;YACR,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI;gBAC1B,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE;aAC1F;SACF,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;IAED,4EAA4E;IAC5E,oCAAoC;IACpC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9B,GAAG,CAAC,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAAC;IAC1C,GAAG,CAAC,GAAG,CAAC,2CAA2C,iBAAiB,qBAAqB,CAAC,CAAC;IAE3F,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAElE,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,GAAG,CAAC,OAAO,CAAC,QAAQ,UAAU,CAAC,IAAI,oBAAoB,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1E,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,yCAAyC,CAAC,CAAC;AACnG,CAAC;AAED,kFAAkF;AAElF,KAAK,UAAU,qBAAqB,CAClC,MAAwB,EACxB,QAAsB;IAEtB,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnF,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,oCAAoC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACxD,qBAAqB,iBAAiB,6CAA6C,CACtF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,IAAI,CACN,qBAAqB,KAAK,CAAC,MAAM,qCAAqC,KAAK,CAAC,CAAC,CAAC,iCAAiC,CAChH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAE,CAAC;AAC7C,CAAC;AAED,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAElC,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAEpF,0DAA0D;IAC1D,QAAQ,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAE1D,+EAA+E;IAC/E,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3F,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,GAAG,CAAC,OAAO,CAAC,6BAA6B,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;IAC3D,GAAG,CAAC,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,GAAG,CAAC,GAAG,CAAC,YAAY,UAAU,EAAE,CAAC,CAAC;IAElC,+EAA+E;IAC/E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,eAAe,CAA0B;YAC7C,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,sBAAsB,UAAU,EAAE;YAC1E,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,CAAC,MAAM,EAAE,EAAE;YACpD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU;YACrE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU;YACrE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAA4B;YAC/C,iEAAiE;YACjE,yEAAyE;YACzE,6BAA6B;YAC7B,aAAa,EAAE,2BAA2B,QAAQ,CAAC,IAAI,iGAAiG;YACxJ,mEAAmE;YACnE,+CAA+C;YAC/C,YAAY,EACV,4GAA4G,SAAS,kDAAkD;SAC1K,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,aAAa,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEzB,8EAA8E;IAC9E,gFAAgF;IAChF,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW;QACjD,CAAC,CAAC,MAAM,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC;QACxD,CAAC,CAAC,SAAS,CAAC;IACd,mBAAmB,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAExF,gFAAgF;IAChF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAG,CAAC,CAAC;IAEzD,+EAA+E;IAC/E,MAAM,WAAW,GAAG,mBAAmB,CAAC,QAAQ,CAAC,MAAM,EAAE;QACvD,MAAM;QACN,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW;KACZ,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAEpE,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,GAAG,CAAC,OAAO,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;IACvC,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,WAAW;QAAE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;IACzD,GAAG,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACjE,GAAG,CAAC,GAAG,CACL,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ;QACjC,CAAC,CAAC,0DAA0D;QAC5D,CAAC,CAAC,oEAAoE,CACzE,CAAC;AACJ,CAAC;AAED,mGAAmG;AACnG,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,MAAM,OAAO,EAAE,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC;QACH,MAAM,UAAU,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,cAAc,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* synap automate
|
|
3
|
+
*
|
|
4
|
+
* The natural-language front door for automations. It deliberately delegates
|
|
5
|
+
* to the deployed workspace agent instead of attempting to parse a workflow in
|
|
6
|
+
* the CLI. That keeps capability discovery, connection checks, and proposal
|
|
7
|
+
* governance in the same path as the rest of the product.
|
|
8
|
+
*/
|
|
9
|
+
import { type AgentAskOpts } from "./agent-chat.js";
|
|
10
|
+
export interface AutomateOpts extends Omit<AgentAskOpts, "message" | "agentType"> {
|
|
11
|
+
}
|
|
12
|
+
type Ask = (opts: AgentAskOpts) => Promise<void>;
|
|
13
|
+
/** Build the canonical, governance-first instruction sent to the workspace agent. */
|
|
14
|
+
export declare function buildAutomatePrompt(instruction: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Send a natural-language automation request through the proven agent-ask
|
|
17
|
+
* channel. The optional dependency makes this thin adapter straightforward to
|
|
18
|
+
* verify without network calls.
|
|
19
|
+
*/
|
|
20
|
+
export declare function automate(instruction: string, opts: AutomateOpts, ask?: Ask): Promise<void>;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* synap automate
|
|
3
|
+
*
|
|
4
|
+
* The natural-language front door for automations. It deliberately delegates
|
|
5
|
+
* to the deployed workspace agent instead of attempting to parse a workflow in
|
|
6
|
+
* the CLI. That keeps capability discovery, connection checks, and proposal
|
|
7
|
+
* governance in the same path as the rest of the product.
|
|
8
|
+
*/
|
|
9
|
+
import chalk from "chalk";
|
|
10
|
+
import { agentAsk, } from "./agent-chat.js";
|
|
11
|
+
const AUTOMATION_BRIEF = `You are handling a request to set up a Synap automation. Work through the deployed Synap capabilities and governance path; do not use an ad-hoc workflow parser.
|
|
12
|
+
|
|
13
|
+
Before proposing anything, inspect the existing capabilities, installed templates, and relevant workspace context. Identify any missing capability or connection prerequisite explicitly. Never install a capability, enable a capability, create a connection, or authenticate an external service automatically.
|
|
14
|
+
|
|
15
|
+
First classify the request. "React" automations start from data already stored in Synap. "Ingest / store" requests start from an external source; verify that its connected source and inbound normalization into Synap already exist. Never invent an external trigger or claim data is stored when it is not. If the source is not available, explain the exact missing prerequisite and the smallest user-approved setup step; do not create an automation proposal yet.
|
|
16
|
+
|
|
17
|
+
Before proposing, declare the exact user-facing contract in three sections: "Gets data", "Stores in Synap", and "Reacts & sends". Empty sections are valid. These are promises, not guesses from node names, and must match the dataContract supplied to create_automation.
|
|
18
|
+
|
|
19
|
+
Only when the requested automation is grounded in existing, available capabilities and connections, create a governed automation proposal for the user to review. Do not directly create, activate, or enable an automation. If it is not grounded, explain the missing prerequisites and the smallest user-approved next step.`;
|
|
20
|
+
/** Build the canonical, governance-first instruction sent to the workspace agent. */
|
|
21
|
+
export function buildAutomatePrompt(instruction) {
|
|
22
|
+
return `${AUTOMATION_BRIEF}\n\nUser request:\n${instruction.trim()}`;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Send a natural-language automation request through the proven agent-ask
|
|
26
|
+
* channel. The optional dependency makes this thin adapter straightforward to
|
|
27
|
+
* verify without network calls.
|
|
28
|
+
*/
|
|
29
|
+
export async function automate(instruction, opts, ask = agentAsk) {
|
|
30
|
+
if (!instruction.trim()) {
|
|
31
|
+
// Match `agent ask`'s fail-fast behavior: otherwise the canonical brief
|
|
32
|
+
// itself would make an empty user instruction look non-empty to agentAsk.
|
|
33
|
+
console.error(chalk.red('Error: an instruction is required. Usage: synap automate "your automation request"'));
|
|
34
|
+
process.exit(1);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
await ask({
|
|
38
|
+
...opts,
|
|
39
|
+
message: buildAutomatePrompt(instruction),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=automate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automate.js","sourceRoot":"","sources":["../../src/commands/automate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,QAAQ,GAET,MAAM,iBAAiB,CAAC;AAMzB,MAAM,gBAAgB,GAAG;;;;;;;;gUAQuS,CAAC;AAEjU,qFAAqF;AACrF,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,OAAO,GAAG,gBAAgB,sBAAsB,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,WAAmB,EACnB,IAAkB,EAClB,MAAW,QAAQ;IAEnB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;QACxB,wEAAwE;QACxE,0EAA0E;QAC1E,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,oFAAoF,CACrF,CACF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,MAAM,GAAG,CAAC;QACR,GAAG,IAAI;QACP,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC;KAC1C,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parity test — `synap automation schema` prints exactly the node types the POD
|
|
3
|
+
* declares, and never a list of its own.
|
|
4
|
+
*
|
|
5
|
+
* THE DEFECT (live-dogfooded 2026-09-12, D5): the command printed ten node types
|
|
6
|
+
* and omitted `playbook_run` and `capability`, so an AI authoring a flow from
|
|
7
|
+
* this reference could not emit a playbook step at all. The stale list lived
|
|
8
|
+
* behind the door (the pod's `AUTOMATION_SCHEMA`), and the CLI carried a SECOND
|
|
9
|
+
* one in a fallback branch that fabricated a two-node DSL whenever the door's
|
|
10
|
+
* `nodeTypes` was absent.
|
|
11
|
+
*
|
|
12
|
+
* These assertions are on the RENDERER against a mocked door payload: the
|
|
13
|
+
* printed set must EQUAL the door's set (no additions, no omissions), and an
|
|
14
|
+
* empty read must report itself rather than invent nodes.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parity test — `synap automation schema` prints exactly the node types the POD
|
|
3
|
+
* declares, and never a list of its own.
|
|
4
|
+
*
|
|
5
|
+
* THE DEFECT (live-dogfooded 2026-09-12, D5): the command printed ten node types
|
|
6
|
+
* and omitted `playbook_run` and `capability`, so an AI authoring a flow from
|
|
7
|
+
* this reference could not emit a playbook step at all. The stale list lived
|
|
8
|
+
* behind the door (the pod's `AUTOMATION_SCHEMA`), and the CLI carried a SECOND
|
|
9
|
+
* one in a fallback branch that fabricated a two-node DSL whenever the door's
|
|
10
|
+
* `nodeTypes` was absent.
|
|
11
|
+
*
|
|
12
|
+
* These assertions are on the RENDERER against a mocked door payload: the
|
|
13
|
+
* printed set must EQUAL the door's set (no additions, no omissions), and an
|
|
14
|
+
* empty read must report itself rather than invent nodes.
|
|
15
|
+
*/
|
|
16
|
+
import { describe, it, expect } from "vitest";
|
|
17
|
+
import { buildSchemaMarkdown } from "./automation.js";
|
|
18
|
+
/** The node types the pod's executor accepts (`FLOW_NODE_TYPES`). */
|
|
19
|
+
const DOOR_NODE_TYPES = [
|
|
20
|
+
"trigger",
|
|
21
|
+
"command",
|
|
22
|
+
"condition",
|
|
23
|
+
"delay",
|
|
24
|
+
"output",
|
|
25
|
+
"loop",
|
|
26
|
+
"transform",
|
|
27
|
+
"fetch",
|
|
28
|
+
"query",
|
|
29
|
+
"entity_read",
|
|
30
|
+
"related_entities",
|
|
31
|
+
"guard",
|
|
32
|
+
"compute",
|
|
33
|
+
"select",
|
|
34
|
+
"claim",
|
|
35
|
+
"messages_query",
|
|
36
|
+
"runs_query",
|
|
37
|
+
"proposals_query",
|
|
38
|
+
"switch",
|
|
39
|
+
"skill",
|
|
40
|
+
"capability",
|
|
41
|
+
"sub_automation",
|
|
42
|
+
"playbook_run",
|
|
43
|
+
];
|
|
44
|
+
function doorPayload(names) {
|
|
45
|
+
return {
|
|
46
|
+
triggerTypes: { manual: { description: "User-triggered." } },
|
|
47
|
+
nodeTypes: Object.fromEntries(names.map((n) => [n, { description: `${n} node`, fields: { a: "string" } }])),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/** Node headings the renderer emitted, in order. */
|
|
51
|
+
function printedNodeTypes(md) {
|
|
52
|
+
const body = md.slice(md.indexOf("## Node Types"));
|
|
53
|
+
return [...body.matchAll(/^### (.+)$/gm)].map((m) => m[1]);
|
|
54
|
+
}
|
|
55
|
+
describe("synap automation schema — the printed node set IS the door's set", () => {
|
|
56
|
+
it("prints every node type the door declares, and only those", () => {
|
|
57
|
+
const md = buildSchemaMarkdown(doorPayload(DOOR_NODE_TYPES), "https://pod.test");
|
|
58
|
+
expect(printedNodeTypes(md)).toEqual(DOOR_NODE_TYPES);
|
|
59
|
+
});
|
|
60
|
+
it("prints the two types the stale hand list omitted", () => {
|
|
61
|
+
const md = buildSchemaMarkdown(doorPayload(DOOR_NODE_TYPES), "https://pod.test");
|
|
62
|
+
// The exact D5 regression: these were absent while the grammar accepted them.
|
|
63
|
+
expect(md).toContain("### playbook_run");
|
|
64
|
+
expect(md).toContain("### capability");
|
|
65
|
+
});
|
|
66
|
+
it("a node type the door ADDS appears with no CLI change", () => {
|
|
67
|
+
// Derivation, not enumeration: an unknown future type must ride through.
|
|
68
|
+
const md = buildSchemaMarkdown(doorPayload(["trigger", "future_node"]), "https://pod.test");
|
|
69
|
+
expect(printedNodeTypes(md)).toEqual(["trigger", "future_node"]);
|
|
70
|
+
});
|
|
71
|
+
it("an EMPTY nodeTypes read is reported, never replaced by a fabricated list", () => {
|
|
72
|
+
const md = buildSchemaMarkdown({ triggerTypes: { manual: { description: "x" } } }, "https://pod.test");
|
|
73
|
+
expect(printedNodeTypes(md)).toEqual([]);
|
|
74
|
+
expect(md).toMatch(/declared no node types/);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
//# sourceMappingURL=automation-schema.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation-schema.test.js","sourceRoot":"","sources":["../../src/commands/automation-schema.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,qEAAqE;AACrE,MAAM,eAAe,GAAG;IACtB,SAAS;IACT,SAAS;IACT,WAAW;IACX,OAAO;IACP,QAAQ;IACR,MAAM;IACN,WAAW;IACX,OAAO;IACP,OAAO;IACP,aAAa;IACb,kBAAkB;IAClB,OAAO;IACP,SAAS;IACT,QAAQ;IACR,OAAO;IACP,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,QAAQ;IACR,OAAO;IACP,YAAY;IACZ,gBAAgB;IAChB,cAAc;CACf,CAAC;AAEF,SAAS,WAAW,CAAC,KAAe;IAClC,OAAO;QACL,YAAY,EAAE,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE;QAC5D,SAAS,EAAE,MAAM,CAAC,WAAW,CAC3B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAC7E;KACF,CAAC;AACJ,CAAC;AAED,oDAAoD;AACpD,SAAS,gBAAgB,CAAC,EAAU;IAClC,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,QAAQ,CAAC,kEAAkE,EAAE,GAAG,EAAE;IAChF,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,EAAE,GAAG,mBAAmB,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACjF,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,EAAE,GAAG,mBAAmB,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACjF,8EAA8E;QAC9E,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACzC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,yEAAyE;QACzE,MAAM,EAAE,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAC5F,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,EAAE,GAAG,mBAAmB,CAC5B,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,EAAE,EAClD,kBAAkB,CACnB,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -45,3 +45,15 @@ export interface SchemaOpts {
|
|
|
45
45
|
json?: boolean;
|
|
46
46
|
}
|
|
47
47
|
export declare function automationSchema(opts: SchemaOpts): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Render the pod's automation-schema document as markdown.
|
|
50
|
+
*
|
|
51
|
+
* EVERY node type printed comes from the DOOR's payload — the CLI keeps no list
|
|
52
|
+
* of its own. It used to: the `else` branch below fabricated a two-node DSL
|
|
53
|
+
* ("trigger" + "output") whenever `nodeTypes` was absent, which is a second
|
|
54
|
+
* hand-maintained list and a confident lie about a 23-node grammar. An absent
|
|
55
|
+
* `nodeTypes` is now REPORTED as a stale/failed read, never papered over.
|
|
56
|
+
*
|
|
57
|
+
* Exported for the parity test (`automation-schema.test.ts`).
|
|
58
|
+
*/
|
|
59
|
+
export declare function buildSchemaMarkdown(schema: Record<string, unknown>, podUrl: string): string;
|
|
@@ -7,7 +7,7 @@ import chalk from "chalk";
|
|
|
7
7
|
import ora from "ora";
|
|
8
8
|
import prompts from "prompts";
|
|
9
9
|
import { readFileSync, mkdirSync, writeFileSync, existsSync } from "fs";
|
|
10
|
-
import { resolveHubConfig, resolveUserId, hubGet, hubPost } from "../lib/hub-client.js";
|
|
10
|
+
import { resolveHubConfig, resolveUserId, hubGet, hubPost, renderHubError } from "../lib/hub-client.js";
|
|
11
11
|
import { unwrapList } from "../lib/unwrapList.js";
|
|
12
12
|
import { log } from "../utils/logger.js";
|
|
13
13
|
// ── Helpers ───────────────────────────────────────────────────────────────────
|
|
@@ -40,21 +40,42 @@ function extractResult(res) {
|
|
|
40
40
|
}
|
|
41
41
|
return res;
|
|
42
42
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const res = await hubGet(`/trpc/${procedure}`, { input: JSON.stringify({ json: input }) }, cfg);
|
|
50
|
-
return extractResult(res);
|
|
51
|
-
}
|
|
43
|
+
/**
|
|
44
|
+
* The ONE remaining hub-tRPC call: `automations.deleteAutomation`, which has no
|
|
45
|
+
* Hub REST door. It is a GATED mutation on the pod's Bearer tRPC fence (S7 —
|
|
46
|
+
* the governed-write gate bounds it by the key's grant), so a scoped key still
|
|
47
|
+
* passes. Every other automation command uses the Hub REST door below.
|
|
48
|
+
*/
|
|
52
49
|
async function trpcMutation(procedure, input, cfg) {
|
|
53
50
|
if (input.userId === undefined)
|
|
54
51
|
input.userId = await resolveUserId(cfg);
|
|
55
52
|
const res = await hubPost(`/trpc/${procedure}`, { json: input }, cfg);
|
|
56
53
|
return extractResult(res);
|
|
57
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Every other automation command goes through the Hub-REST automations door
|
|
57
|
+
* (`/api/hub/automations…`, backend `hub-protocol/rest/automations.ts`). The
|
|
58
|
+
* pod's Bearer tRPC door refuses a scoped key (the default agent key) on every
|
|
59
|
+
* mutation the gate does not bound — `activateAutomation` among them (S7,
|
|
60
|
+
* 2026-10-20) — and the REST doors are the documented ones.
|
|
61
|
+
*/
|
|
62
|
+
async function hubListAutomations(input, cfg) {
|
|
63
|
+
const userId = await resolveUserId(cfg);
|
|
64
|
+
return hubGet("/automations", { userId, workspaceId: input.workspaceId, status: input.status }, cfg);
|
|
65
|
+
}
|
|
66
|
+
async function hubCreateAutomation(payload, cfg) {
|
|
67
|
+
const userId = await resolveUserId(cfg);
|
|
68
|
+
return hubPost("/automations/create", { ...payload, userId }, cfg);
|
|
69
|
+
}
|
|
70
|
+
async function hubGetAutomation(id, workspaceId, cfg) {
|
|
71
|
+
const userId = await resolveUserId(cfg);
|
|
72
|
+
return hubGet(`/automations/${encodeURIComponent(id)}`, { userId, workspaceId }, cfg);
|
|
73
|
+
}
|
|
74
|
+
/** `POST /automations/:id/activate|pause` — the door needs a workspace. */
|
|
75
|
+
async function hubAutomationAction(id, action, workspaceId, cfg) {
|
|
76
|
+
const userId = await resolveUserId(cfg);
|
|
77
|
+
return (await hubPost(`/automations/${encodeURIComponent(id)}/${action}`, { userId, workspaceId }, cfg));
|
|
78
|
+
}
|
|
58
79
|
function parseYamlOrJson(filePath) {
|
|
59
80
|
const content = readFileSync(filePath, "utf-8").trim();
|
|
60
81
|
// JSON path
|
|
@@ -178,35 +199,25 @@ export async function automationList(opts) {
|
|
|
178
199
|
cfg = await resolveHubConfig();
|
|
179
200
|
}
|
|
180
201
|
catch (err) {
|
|
181
|
-
|
|
202
|
+
renderHubError(err);
|
|
182
203
|
process.exit(1);
|
|
183
204
|
}
|
|
184
205
|
const workspaceId = opts.workspace ?? cfg.workspaceId;
|
|
185
206
|
if (opts.json) {
|
|
186
|
-
const
|
|
187
|
-
if (workspaceId)
|
|
188
|
-
input.workspaceId = workspaceId;
|
|
189
|
-
if (opts.status)
|
|
190
|
-
input.status = opts.status;
|
|
191
|
-
const data = await trpcQuery("automations.listAutomations", input, cfg);
|
|
207
|
+
const data = await hubListAutomations({ workspaceId, status: opts.status }, cfg);
|
|
192
208
|
console.log(JSON.stringify(data, null, 2));
|
|
193
209
|
return;
|
|
194
210
|
}
|
|
195
211
|
const spinner = ora({ text: "Fetching automations…", color: "cyan" }).start();
|
|
196
212
|
let automations;
|
|
197
213
|
try {
|
|
198
|
-
const
|
|
199
|
-
if (workspaceId)
|
|
200
|
-
input.workspaceId = workspaceId;
|
|
201
|
-
if (opts.status)
|
|
202
|
-
input.status = opts.status;
|
|
203
|
-
const data = await trpcQuery("automations.listAutomations", input, cfg);
|
|
214
|
+
const data = await hubListAutomations({ workspaceId, status: opts.status }, cfg);
|
|
204
215
|
automations = unwrapList(data, ["automations"]);
|
|
205
216
|
spinner.stop();
|
|
206
217
|
}
|
|
207
218
|
catch (err) {
|
|
208
219
|
spinner.fail(chalk.red("Failed to fetch automations"));
|
|
209
|
-
|
|
220
|
+
renderHubError(err);
|
|
210
221
|
process.exit(1);
|
|
211
222
|
}
|
|
212
223
|
if (automations.length === 0) {
|
|
@@ -229,28 +240,41 @@ export async function automationDescribe(id, opts) {
|
|
|
229
240
|
cfg = await resolveHubConfig();
|
|
230
241
|
}
|
|
231
242
|
catch (err) {
|
|
232
|
-
|
|
243
|
+
renderHubError(err);
|
|
233
244
|
process.exit(1);
|
|
234
245
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
246
|
+
// An id is already unambiguous — do NOT default to the ambient active-lens
|
|
247
|
+
// workspace (cfg.workspaceId) here. `automations.get` already treats a
|
|
248
|
+
// missing workspaceId as "search every workspace this caller can see" (it
|
|
249
|
+
// only NARROWS when one is given); defaulting to the lens would silently
|
|
250
|
+
// narrow away rows that live in a different workspace than whatever the
|
|
251
|
+
// user last `synap use`'d, producing a misleading 404 for a row they can
|
|
252
|
+
// actually read. Only narrow when the user explicitly asks with --workspace.
|
|
253
|
+
const workspaceId = opts.workspace;
|
|
239
254
|
if (opts.json) {
|
|
240
|
-
const data = await
|
|
255
|
+
const data = await hubGetAutomation(id, workspaceId, cfg);
|
|
241
256
|
console.log(JSON.stringify(data, null, 2));
|
|
242
257
|
return;
|
|
243
258
|
}
|
|
244
259
|
const spinner = ora({ text: "Fetching automation…", color: "cyan" }).start();
|
|
245
260
|
let automation;
|
|
246
261
|
try {
|
|
247
|
-
const data = await
|
|
262
|
+
const data = await hubGetAutomation(id, workspaceId, cfg);
|
|
248
263
|
automation = data;
|
|
249
264
|
spinner.stop();
|
|
250
265
|
}
|
|
251
266
|
catch (err) {
|
|
252
267
|
spinner.fail(chalk.red("Failed to fetch automation"));
|
|
253
|
-
|
|
268
|
+
const msg = err.message;
|
|
269
|
+
if (/not found/i.test(msg) && workspaceId) {
|
|
270
|
+
log.error(`Automation not found in workspace ${workspaceId} — try \`synap automation describe ${id}\` without --workspace to search every workspace you can see.`);
|
|
271
|
+
}
|
|
272
|
+
else if (/not found/i.test(msg)) {
|
|
273
|
+
log.error(`Automation not found in any workspace you can see. Double-check the id, or pass --workspace <id> if you know which workspace it lives in.`);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
log.error(msg);
|
|
277
|
+
}
|
|
254
278
|
process.exit(1);
|
|
255
279
|
}
|
|
256
280
|
log.heading(`Automation: ${chalk.bold(automation.name)}`);
|
|
@@ -286,7 +310,7 @@ export async function automationCreate(opts) {
|
|
|
286
310
|
cfg = await resolveHubConfig();
|
|
287
311
|
}
|
|
288
312
|
catch (err) {
|
|
289
|
-
|
|
313
|
+
renderHubError(err);
|
|
290
314
|
process.exit(1);
|
|
291
315
|
}
|
|
292
316
|
const workspaceId = opts.workspace ?? cfg.workspaceId;
|
|
@@ -300,7 +324,7 @@ export async function automationCreate(opts) {
|
|
|
300
324
|
}
|
|
301
325
|
catch (err) {
|
|
302
326
|
spinner.fail(chalk.red("Failed to read file"));
|
|
303
|
-
|
|
327
|
+
renderHubError(err);
|
|
304
328
|
process.exit(1);
|
|
305
329
|
}
|
|
306
330
|
// Apply {{env.VAR}} substitution
|
|
@@ -342,7 +366,7 @@ export async function automationCreate(opts) {
|
|
|
342
366
|
}
|
|
343
367
|
catch (err) {
|
|
344
368
|
spinner.fail(chalk.red("Invalid --trigger spec"));
|
|
345
|
-
|
|
369
|
+
renderHubError(err);
|
|
346
370
|
process.exit(1);
|
|
347
371
|
}
|
|
348
372
|
// Apply --filter for event triggers
|
|
@@ -356,7 +380,7 @@ export async function automationCreate(opts) {
|
|
|
356
380
|
}
|
|
357
381
|
catch (err) {
|
|
358
382
|
spinner.fail(chalk.red("Invalid --filter value"));
|
|
359
|
-
|
|
383
|
+
renderHubError(err);
|
|
360
384
|
process.exit(1);
|
|
361
385
|
}
|
|
362
386
|
}
|
|
@@ -380,7 +404,7 @@ export async function automationCreate(opts) {
|
|
|
380
404
|
}
|
|
381
405
|
let result;
|
|
382
406
|
try {
|
|
383
|
-
const data = await
|
|
407
|
+
const data = await hubCreateAutomation(payload, cfg);
|
|
384
408
|
// Response shape may be: { automation: {...} } | { id, name, ... } | raw Automation
|
|
385
409
|
const raw = data;
|
|
386
410
|
const inner = (raw.automation ?? raw);
|
|
@@ -388,7 +412,7 @@ export async function automationCreate(opts) {
|
|
|
388
412
|
}
|
|
389
413
|
catch (err) {
|
|
390
414
|
spinner.fail(chalk.red("Failed to create automation"));
|
|
391
|
-
|
|
415
|
+
renderHubError(err);
|
|
392
416
|
process.exit(1);
|
|
393
417
|
}
|
|
394
418
|
spinner.succeed(chalk.green(`Automation created`));
|
|
@@ -405,26 +429,37 @@ export async function automationEnable(id, opts) {
|
|
|
405
429
|
cfg = await resolveHubConfig();
|
|
406
430
|
}
|
|
407
431
|
catch (err) {
|
|
408
|
-
|
|
432
|
+
renderHubError(err);
|
|
409
433
|
process.exit(1);
|
|
410
434
|
}
|
|
411
435
|
const workspaceId = opts.workspace ?? cfg.workspaceId;
|
|
436
|
+
if (!workspaceId) {
|
|
437
|
+
log.error("Activating an automation needs its workspace: pass --workspace <id>.");
|
|
438
|
+
process.exit(1);
|
|
439
|
+
}
|
|
412
440
|
const spinner = ora({ text: "Activating automation…", color: "cyan" }).start();
|
|
413
|
-
const input = { id };
|
|
414
|
-
if (workspaceId)
|
|
415
|
-
input.workspaceId = workspaceId;
|
|
416
441
|
let result;
|
|
417
442
|
try {
|
|
418
|
-
|
|
419
|
-
result = data;
|
|
443
|
+
result = await hubAutomationAction(id, "activate", workspaceId, cfg);
|
|
420
444
|
}
|
|
421
445
|
catch (err) {
|
|
422
446
|
spinner.fail(chalk.red("Failed to activate automation"));
|
|
423
|
-
|
|
447
|
+
renderHubError(err);
|
|
424
448
|
process.exit(1);
|
|
425
449
|
}
|
|
426
450
|
spinner.stop();
|
|
427
|
-
|
|
451
|
+
if (result.status === "proposed") {
|
|
452
|
+
// An agent key proposes the activation; a person approves it.
|
|
453
|
+
log.success(`Activation of ${chalk.bold(id)} proposed for review`);
|
|
454
|
+
if (result.proposalId)
|
|
455
|
+
log.dim(`proposal ${result.proposalId}`);
|
|
456
|
+
return;
|
|
457
|
+
}
|
|
458
|
+
if (result.status === "already_active") {
|
|
459
|
+
log.info(`Automation ${chalk.bold(id)} was already active`);
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
log.success(`Automation ${chalk.bold(id)} is now active`);
|
|
428
463
|
}
|
|
429
464
|
export async function automationDisable(id, opts) {
|
|
430
465
|
let cfg;
|
|
@@ -432,26 +467,25 @@ export async function automationDisable(id, opts) {
|
|
|
432
467
|
cfg = await resolveHubConfig();
|
|
433
468
|
}
|
|
434
469
|
catch (err) {
|
|
435
|
-
|
|
470
|
+
renderHubError(err);
|
|
436
471
|
process.exit(1);
|
|
437
472
|
}
|
|
438
473
|
const workspaceId = opts.workspace ?? cfg.workspaceId;
|
|
474
|
+
if (!workspaceId) {
|
|
475
|
+
log.error("Pausing an automation needs its workspace: pass --workspace <id>.");
|
|
476
|
+
process.exit(1);
|
|
477
|
+
}
|
|
439
478
|
const spinner = ora({ text: "Pausing automation…", color: "cyan" }).start();
|
|
440
|
-
const input = { id };
|
|
441
|
-
if (workspaceId)
|
|
442
|
-
input.workspaceId = workspaceId;
|
|
443
|
-
let result;
|
|
444
479
|
try {
|
|
445
|
-
|
|
446
|
-
result = data;
|
|
480
|
+
await hubAutomationAction(id, "pause", workspaceId, cfg);
|
|
447
481
|
}
|
|
448
482
|
catch (err) {
|
|
449
483
|
spinner.fail(chalk.red("Failed to pause automation"));
|
|
450
|
-
|
|
484
|
+
renderHubError(err);
|
|
451
485
|
process.exit(1);
|
|
452
486
|
}
|
|
453
487
|
spinner.stop();
|
|
454
|
-
console.log(` ${chalk.red("⊘")} Automation ${chalk.bold(
|
|
488
|
+
console.log(` ${chalk.red("⊘")} Automation ${chalk.bold(id)} paused`);
|
|
455
489
|
}
|
|
456
490
|
export async function automationDelete(id, opts) {
|
|
457
491
|
let cfg;
|
|
@@ -459,18 +493,20 @@ export async function automationDelete(id, opts) {
|
|
|
459
493
|
cfg = await resolveHubConfig();
|
|
460
494
|
}
|
|
461
495
|
catch (err) {
|
|
462
|
-
|
|
496
|
+
renderHubError(err);
|
|
463
497
|
process.exit(1);
|
|
464
498
|
}
|
|
465
|
-
|
|
499
|
+
// Same id-is-unambiguous rule as `describe`: don't default to the ambient
|
|
500
|
+
// lens workspace, it can silently narrow away a row that lives elsewhere.
|
|
501
|
+
// (activate/pause/delete themselves ignore workspaceId server-side — they
|
|
502
|
+
// load by id and gate on the row's OWN workspace — so this only affects
|
|
503
|
+
// the name lookup below.)
|
|
504
|
+
const workspaceId = opts.workspace;
|
|
466
505
|
// Fetch name for confirmation prompt
|
|
467
506
|
let automationName = id;
|
|
468
507
|
if (!opts.force) {
|
|
469
508
|
try {
|
|
470
|
-
const
|
|
471
|
-
if (workspaceId)
|
|
472
|
-
input.workspaceId = workspaceId;
|
|
473
|
-
const data = await trpcQuery("automations.getAutomation", input, cfg);
|
|
509
|
+
const data = await hubGetAutomation(id, workspaceId, cfg);
|
|
474
510
|
automationName = data.name ?? id;
|
|
475
511
|
}
|
|
476
512
|
catch {
|
|
@@ -496,7 +532,7 @@ export async function automationDelete(id, opts) {
|
|
|
496
532
|
}
|
|
497
533
|
catch (err) {
|
|
498
534
|
spinner.fail(chalk.red("Failed to delete automation"));
|
|
499
|
-
|
|
535
|
+
renderHubError(err);
|
|
500
536
|
process.exit(1);
|
|
501
537
|
}
|
|
502
538
|
spinner.succeed(chalk.green(`Automation '${automationName}' deleted`));
|
|
@@ -507,7 +543,7 @@ export async function automationSchema(opts) {
|
|
|
507
543
|
cfg = await resolveHubConfig();
|
|
508
544
|
}
|
|
509
545
|
catch (err) {
|
|
510
|
-
|
|
546
|
+
renderHubError(err);
|
|
511
547
|
process.exit(1);
|
|
512
548
|
}
|
|
513
549
|
const spinner = opts.json ? null : ora({ text: "Fetching schema…", color: "cyan" }).start();
|
|
@@ -519,7 +555,7 @@ export async function automationSchema(opts) {
|
|
|
519
555
|
}
|
|
520
556
|
catch (err) {
|
|
521
557
|
spinner?.fail(chalk.red("Failed to fetch schema"));
|
|
522
|
-
|
|
558
|
+
renderHubError(err);
|
|
523
559
|
process.exit(1);
|
|
524
560
|
}
|
|
525
561
|
if (opts.json) {
|
|
@@ -544,7 +580,18 @@ export async function automationSchema(opts) {
|
|
|
544
580
|
console.log(md);
|
|
545
581
|
}
|
|
546
582
|
}
|
|
547
|
-
|
|
583
|
+
/**
|
|
584
|
+
* Render the pod's automation-schema document as markdown.
|
|
585
|
+
*
|
|
586
|
+
* EVERY node type printed comes from the DOOR's payload — the CLI keeps no list
|
|
587
|
+
* of its own. It used to: the `else` branch below fabricated a two-node DSL
|
|
588
|
+
* ("trigger" + "output") whenever `nodeTypes` was absent, which is a second
|
|
589
|
+
* hand-maintained list and a confident lie about a 23-node grammar. An absent
|
|
590
|
+
* `nodeTypes` is now REPORTED as a stale/failed read, never papered over.
|
|
591
|
+
*
|
|
592
|
+
* Exported for the parity test (`automation-schema.test.ts`).
|
|
593
|
+
*/
|
|
594
|
+
export function buildSchemaMarkdown(schema, podUrl) {
|
|
548
595
|
const lines = [
|
|
549
596
|
`# Synap Automation DSL Reference`,
|
|
550
597
|
``,
|
|
@@ -593,7 +640,10 @@ function buildSchemaMarkdown(schema, podUrl) {
|
|
|
593
640
|
}
|
|
594
641
|
}
|
|
595
642
|
else {
|
|
596
|
-
|
|
643
|
+
// NOT a fallback list. The node types are the pod's to declare; printing a
|
|
644
|
+
// guessed subset here is how the reference fell two node types behind the
|
|
645
|
+
// executor in the first place. Say the read came back empty instead.
|
|
646
|
+
lines.push(``, `_This pod's schema document declared no node types — the reference could not be read._`, `_Upgrade the pod, or read the raw document with \`synap automation schema --json\`._`);
|
|
597
647
|
}
|
|
598
648
|
lines.push(``, `## Template Syntax`, ``, `String values support \`{{...}}\` template expressions:`, ``, `- \`{{trigger.payload.entity.title}}\` — field from the triggering event`, `- \`{{trigger.payload.entity.id}}\` — entity ID from trigger`, `- \`{{env.MY_VAR}}\` — environment variable (resolved at CLI create-time when using \`--from\`)`, ``, `## Quick-Create Examples`, ``, `\`\`\`bash`, `# Notify when a note is created`, `synap automation create --name "Note alert" --trigger "event:entity.create.completed" --filter "profileSlug=note" --action notify --message "New note: {{trigger.payload.entity.title}}"`, ``, `# Weekly digest every Monday at 9am`, `synap automation create --name "Weekly digest" --trigger "cron:0 9 * * MON" --action channel-message --channel "#general" --message "Weekly digest ready."`, ``, `# Manual-only automation (draft, no action)`, `synap automation create --name "Manual trigger" --trigger manual`, `\`\`\``, ``, `## YAML File Format`, ``, `\`\`\`yaml`, `name: string`, `description: string # optional`, `trigger: event | cron | webhook | manual`, `triggerConfig:`, ` eventPattern: string # for event triggers`, ` filters: # for event triggers`, ` key: value`, ` expression: string # for cron triggers`, `status: draft | active`, `flow:`, ` nodes:`, ` - id: trigger-1`, ` type: trigger`, ` position: { x: 0, y: 0 }`, ` data:`, ` triggerType: event`, ` label: Trigger`, ` config:`, ` eventPattern: entity.create.completed`, ` edges: []`, `\`\`\``, ``, `> **Env substitution**: \`{{env.MY_VAR}}\` in any string value is replaced with \`process.env.MY_VAR\` at create-time.`);
|
|
599
649
|
return lines.join("\n");
|