@synap-core/cli 1.12.2 → 1.13.1-next.20261102.ec3d166
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 +38 -11
- package/dist/build-info.json +2 -3
- package/dist/commands/agents.d.ts +0 -1
- package/dist/commands/agents.js +13 -3
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/app.js +2 -1
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/automation.js +46 -41
- 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.js +3 -1
- package/dist/commands/bridge-setup.js.map +1 -1
- package/dist/commands/capability.d.ts +87 -1
- package/dist/commands/capability.js +174 -64
- package/dist/commands/capability.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 +1 -3
- package/dist/commands/connect.js +2 -2
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/context.js +72 -43
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/data-extra.d.ts +13 -0
- package/dist/commands/data-extra.js +35 -6
- package/dist/commands/data-extra.js.map +1 -1
- package/dist/commands/data.js +2 -1
- package/dist/commands/data.js.map +1 -1
- package/dist/commands/doctor.d.ts +39 -0
- package/dist/commands/doctor.js +136 -14
- package/dist/commands/doctor.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 +25 -0
- package/dist/commands/import.js +98 -12
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/init.d.ts +14 -0
- package/dist/commands/init.js +63 -21
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/keys-request.d.ts +48 -0
- package/dist/commands/keys-request.js +236 -0
- package/dist/commands/keys-request.js.map +1 -0
- package/dist/commands/keys-request.test.d.ts +1 -0
- package/dist/commands/keys-request.test.js +176 -0
- package/dist/commands/keys-request.test.js.map +1 -0
- package/dist/commands/knowledge.d.ts +6 -0
- package/dist/commands/knowledge.js +13 -3
- package/dist/commands/knowledge.js.map +1 -1
- package/dist/commands/lens.js +2 -1
- package/dist/commands/lens.js.map +1 -1
- package/dist/commands/market-authoring.js +1 -1
- package/dist/commands/market-authoring.js.map +1 -1
- package/dist/commands/market.d.ts +61 -4
- package/dist/commands/market.js +106 -48
- package/dist/commands/market.js.map +1 -1
- package/dist/commands/mcp.d.ts +1 -1
- package/dist/commands/mcp.js +14 -9
- 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/playbook.js +9 -0
- package/dist/commands/playbook.js.map +1 -1
- package/dist/commands/pods.d.ts +6 -1
- package/dist/commands/pods.js +38 -17
- package/dist/commands/pods.js.map +1 -1
- package/dist/commands/proposals-actions.js +7 -1
- package/dist/commands/proposals-actions.js.map +1 -1
- package/dist/commands/proton-setup.js +3 -1
- package/dist/commands/proton-setup.js.map +1 -1
- package/dist/commands/providers.d.ts +22 -6
- package/dist/commands/providers.js +39 -32
- package/dist/commands/providers.js.map +1 -1
- package/dist/commands/raycast.d.ts +15 -0
- package/dist/commands/raycast.js +36 -10
- package/dist/commands/raycast.js.map +1 -1
- 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 +9 -4
- package/dist/commands/session-wait.js +20 -5
- package/dist/commands/session-wait.js.map +1 -1
- package/dist/commands/sessions.d.ts +2 -0
- package/dist/commands/sessions.js +23 -0
- package/dist/commands/sessions.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/status.js +13 -7
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/statusline.backoff.test.js +13 -3
- package/dist/commands/statusline.backoff.test.js.map +1 -1
- package/dist/commands/statusline.d.ts +104 -9
- package/dist/commands/statusline.js +392 -148
- package/dist/commands/statusline.js.map +1 -1
- package/dist/commands/statusline.line2.test.d.ts +15 -0
- package/dist/commands/statusline.line2.test.js +226 -0
- package/dist/commands/statusline.line2.test.js.map +1 -0
- package/dist/commands/statusline.needs-you.test.d.ts +1 -0
- package/dist/commands/statusline.needs-you.test.js +17 -0
- package/dist/commands/statusline.needs-you.test.js.map +1 -0
- package/dist/commands/statusline.now.test.d.ts +10 -0
- package/dist/commands/statusline.now.test.js +250 -0
- package/dist/commands/statusline.now.test.js.map +1 -0
- package/dist/commands/tracks.d.ts +68 -6
- package/dist/commands/tracks.js +272 -16
- package/dist/commands/tracks.js.map +1 -1
- package/dist/commands/upload.js +12 -0
- package/dist/commands/upload.js.map +1 -1
- package/dist/commands/wait.d.ts +124 -0
- package/dist/commands/wait.js +384 -0
- package/dist/commands/wait.js.map +1 -0
- package/dist/commands/wait.test.d.ts +8 -0
- package/dist/commands/wait.test.js +308 -0
- package/dist/commands/wait.test.js.map +1 -0
- package/dist/commands/whoami.d.ts +7 -0
- package/dist/commands/whoami.js +17 -0
- 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-github-app.d.ts +63 -0
- package/dist/commands/worker-github-app.js +161 -0
- package/dist/commands/worker-github-app.js.map +1 -0
- package/dist/commands/worker-github-app.test.d.ts +1 -0
- package/dist/commands/worker-github-app.test.js +102 -0
- package/dist/commands/worker-github-app.test.js.map +1 -0
- package/dist/commands/worker-github-broker.d.ts +39 -0
- package/dist/commands/worker-github-broker.js +106 -0
- package/dist/commands/worker-github-broker.js.map +1 -0
- package/dist/commands/worker-github-broker.test.d.ts +1 -0
- package/dist/commands/worker-github-broker.test.js +90 -0
- package/dist/commands/worker-github-broker.test.js.map +1 -0
- package/dist/commands/worker-runs.test.d.ts +1 -0
- package/dist/commands/worker-runs.test.js +150 -0
- package/dist/commands/worker-runs.test.js.map +1 -0
- package/dist/commands/worker-worktrees.d.ts +34 -0
- package/dist/commands/worker-worktrees.js +87 -0
- package/dist/commands/worker-worktrees.js.map +1 -0
- package/dist/commands/worker.d.ts +406 -10
- package/dist/commands/worker.js +1180 -126
- package/dist/commands/worker.js.map +1 -1
- package/dist/commands/worker.test.js +588 -11
- package/dist/commands/worker.test.js.map +1 -1
- package/dist/index.js +220 -28
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-door.d.ts +1 -3
- package/dist/lib/agent-door.js +10 -7
- package/dist/lib/agent-door.js.map +1 -1
- package/dist/lib/agents-config.d.ts +9 -0
- package/dist/lib/agents-config.js +20 -0
- package/dist/lib/agents-config.js.map +1 -1
- package/dist/lib/atomic-file.d.ts +20 -1
- package/dist/lib/atomic-file.js +100 -2
- package/dist/lib/atomic-file.js.map +1 -1
- package/dist/lib/auth.d.ts +28 -2
- package/dist/lib/auth.js +52 -12
- package/dist/lib/auth.js.map +1 -1
- 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 +250 -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/bridge-invocation.test.d.ts +1 -0
- package/dist/lib/bridge-invocation.test.js +75 -0
- package/dist/lib/bridge-invocation.test.js.map +1 -0
- package/dist/lib/bridge-status.d.ts +144 -0
- package/dist/lib/bridge-status.js +227 -0
- package/dist/lib/bridge-status.js.map +1 -0
- package/dist/lib/bridge-status.test.d.ts +6 -0
- package/dist/lib/bridge-status.test.js +197 -0
- package/dist/lib/bridge-status.test.js.map +1 -0
- package/dist/lib/client-header.test.d.ts +1 -0
- package/dist/lib/client-header.test.js +103 -0
- package/dist/lib/client-header.test.js.map +1 -0
- package/dist/lib/conversation-headers.d.ts +89 -9
- package/dist/lib/conversation-headers.js +156 -3
- package/dist/lib/conversation-headers.js.map +1 -1
- package/dist/lib/conversation-headers.test.d.ts +1 -0
- package/dist/lib/conversation-headers.test.js +78 -0
- package/dist/lib/conversation-headers.test.js.map +1 -0
- package/dist/lib/credential-class.d.ts +40 -2
- package/dist/lib/credential-class.js +48 -6
- package/dist/lib/credential-class.js.map +1 -1
- package/dist/lib/device-connect.d.ts +45 -0
- package/dist/lib/device-connect.js +60 -0
- package/dist/lib/device-connect.js.map +1 -1
- package/dist/lib/exporter-coverage.d.ts +1 -1
- package/dist/lib/exporter-coverage.js +1 -1
- package/dist/lib/goal-words.d.ts +38 -0
- package/dist/lib/goal-words.js +115 -0
- package/dist/lib/goal-words.js.map +1 -0
- package/dist/lib/hub-client.d.ts +87 -8
- package/dist/lib/hub-client.js +205 -70
- package/dist/lib/hub-client.js.map +1 -1
- package/dist/lib/init-handoff.d.ts +8 -0
- package/dist/lib/init-handoff.js +9 -2
- package/dist/lib/init-handoff.js.map +1 -1
- package/dist/lib/key-locations.d.ts +3 -3
- package/dist/lib/key-locations.js +3 -39
- package/dist/lib/key-locations.js.map +1 -1
- package/dist/lib/key-source.d.ts +3 -1
- package/dist/lib/key-source.js +7 -4
- package/dist/lib/key-source.js.map +1 -1
- package/dist/lib/knowledge-title.d.ts +3 -2
- package/dist/lib/knowledge-title.js +3 -2
- package/dist/lib/knowledge-title.js.map +1 -1
- package/dist/lib/machine-instance.d.ts +7 -5
- package/dist/lib/machine-instance.js +7 -5
- package/dist/lib/machine-instance.js.map +1 -1
- package/dist/lib/mcp-bridge.d.ts +50 -0
- package/dist/lib/mcp-bridge.js +232 -11
- package/dist/lib/mcp-bridge.js.map +1 -1
- package/dist/lib/mcp-bridge.test.js +224 -4
- package/dist/lib/mcp-bridge.test.js.map +1 -1
- package/dist/lib/mcp-call.d.ts +5 -1
- package/dist/lib/mcp-call.js +7 -6
- package/dist/lib/mcp-call.js.map +1 -1
- package/dist/lib/mcp-connector-url.test.d.ts +1 -0
- package/dist/lib/mcp-connector-url.test.js +13 -0
- package/dist/lib/mcp-connector-url.test.js.map +1 -0
- package/dist/lib/mcp-snippets.d.ts +16 -0
- package/dist/lib/mcp-snippets.js +20 -2
- package/dist/lib/mcp-snippets.js.map +1 -1
- package/dist/lib/now-line.d.ts +66 -0
- package/dist/lib/now-line.js +193 -0
- package/dist/lib/now-line.js.map +1 -0
- package/dist/lib/now-line.test.d.ts +5 -0
- package/dist/lib/now-line.test.js +177 -0
- package/dist/lib/now-line.test.js.map +1 -0
- package/dist/lib/package-updates.d.ts +66 -0
- package/dist/lib/package-updates.js +76 -0
- package/dist/lib/package-updates.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.d.ts +8 -4
- package/dist/lib/pod.js +12 -10
- package/dist/lib/pod.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 +97 -0
- package/dist/lib/register-claude-code-mcp.test.js.map +1 -0
- package/dist/lib/review-credential.js +3 -1
- package/dist/lib/review-credential.js.map +1 -1
- package/dist/lib/safe-open.d.ts +5 -3
- package/dist/lib/safe-open.js +9 -8
- package/dist/lib/safe-open.js.map +1 -1
- package/dist/lib/self-host.d.ts +17 -0
- package/dist/lib/self-host.js +24 -0
- package/dist/lib/self-host.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/targets.d.ts +52 -3
- package/dist/lib/targets.js +150 -209
- package/dist/lib/targets.js.map +1 -1
- package/dist/lib/term.d.ts +24 -0
- package/dist/lib/term.js +52 -0
- package/dist/lib/term.js.map +1 -0
- package/dist/lib/term.test.d.ts +1 -0
- package/dist/lib/term.test.js +29 -0
- package/dist/lib/term.test.js.map +1 -0
- package/dist/lib/transcript-index.d.ts +94 -0
- package/dist/lib/transcript-index.js +321 -0
- package/dist/lib/transcript-index.js.map +1 -0
- package/dist/lib/transcript-index.test.d.ts +10 -0
- package/dist/lib/transcript-index.test.js +200 -0
- package/dist/lib/transcript-index.test.js.map +1 -0
- package/dist/lib/wait-help.d.ts +11 -0
- package/dist/lib/wait-help.js +25 -0
- package/dist/lib/wait-help.js.map +1 -0
- package/dist/lib/wait-state.d.ts +57 -0
- package/dist/lib/wait-state.js +114 -0
- package/dist/lib/wait-state.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/package.json +5 -2
- package/skills/README.md +1 -1
- package/skills/agent-os/SKILL.md +8 -8
- package/skills/synap/SKILL.md +178 -88
- package/skills/synap/code-skills.md +84 -0
- package/skills/synap/concepts.md +38 -20
- package/skills/synap/creative-loop.md +1 -1
- package/skills/synap/document-embeds.md +17 -1
- package/skills/synap/focus-sessions.md +17 -8
- package/skills/synap/from-intent.md +33 -17
- package/skills/synap/governance-rules.md +3 -1
- package/skills/synap/lenses.md +4 -4
- package/skills/synap/linking.md +2 -2
- package/skills/synap/mental-model.md +1 -1
- package/skills/synap/operating-mode-rules.md +1 -1
- package/skills/synap/quick-reference.md +2 -1
- package/skills/synap/reflexes.md +8 -8
- package/skills/synap/viewframe-cells.md +1 -1
- package/skills/synap/work-model.md +24 -10
- package/skills/synap/workspace-design.md +5 -5
- package/skills/synap/writes.md +16 -9
- package/skills/synap/writing-titles.md +7 -0
- package/skills/synap-app/SKILL.md +148 -66
- 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-market/SKILL.md +1 -1
- package/skills/synap-market/governance-and-catalog.md +1 -1
- package/skills/synap-schema/SKILL.md +24 -21
- package/skills/synap-schema/intent-vocabulary-ssot.md +24 -21
- package/templates/box/runner.py +206 -0
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
* blocked), classification is deliberately three-valued and the guard is
|
|
29
29
|
* belt-and-braces:
|
|
30
30
|
* • `agent` — positive agent signal → refuse locally, before the network call.
|
|
31
|
-
* • `human` — positive human signal (`user_pat`) → never blocked.
|
|
31
|
+
* • `human` — positive human signal (`user_pat` NOT owned by an agent user) → never blocked.
|
|
32
32
|
* • `unknown` — no signal → PROCEED, and translate the server's 403 after the
|
|
33
33
|
* fact (`isAgentReviewRejection`). The server stays authoritative.
|
|
34
34
|
*
|
|
@@ -47,6 +47,27 @@ import { hubGet, HubError } from "./hub-client.js";
|
|
|
47
47
|
export async function fetchAuthStatus(cfg, apiKey) {
|
|
48
48
|
return (await hubGet("/auth/status", {}, apiKey ? { ...cfg, apiKey } : cfg));
|
|
49
49
|
}
|
|
50
|
+
const agentUserIdCache = new Map();
|
|
51
|
+
/**
|
|
52
|
+
* WHO this key is — the agent principal, for recognising the agent's OWN
|
|
53
|
+
* posts (a room message carries it as `routedTeammateId`). Never the acting
|
|
54
|
+
* user sent to the pod: that is `resolveUserId` (/users/me), which for an
|
|
55
|
+
* agent key answers the linked HUMAN. The id recorded with the key
|
|
56
|
+
* (`cfg.agentUserId`) wins; else the pod's key-owner answer (/auth/status),
|
|
57
|
+
* cached per key. For a person's own key both questions answer the person.
|
|
58
|
+
*/
|
|
59
|
+
export async function resolveAgentUserId(cfg) {
|
|
60
|
+
if (cfg.agentUserId)
|
|
61
|
+
return cfg.agentUserId;
|
|
62
|
+
const cached = agentUserIdCache.get(cfg.apiKey);
|
|
63
|
+
if (cached)
|
|
64
|
+
return cached;
|
|
65
|
+
const owner = (await fetchAuthStatus(cfg)).userId;
|
|
66
|
+
if (!owner)
|
|
67
|
+
throw new Error("The pod did not say who owns this key (GET /auth/status has no userId).");
|
|
68
|
+
agentUserIdCache.set(cfg.apiKey, owner);
|
|
69
|
+
return owner;
|
|
70
|
+
}
|
|
50
71
|
/** Resolve the effective identity. `apiKey` overrides `cfg.apiKey`, mirroring `fetchAuthStatus`. */
|
|
51
72
|
export async function fetchEffectiveIdentity(cfg, apiKey) {
|
|
52
73
|
return (await hubGet("/users/me", {}, apiKey ? { ...cfg, apiKey } : cfg));
|
|
@@ -56,14 +77,15 @@ const AGENT_EMAIL_DOMAIN = "@synap.agent";
|
|
|
56
77
|
export function classifyReviewer(status) {
|
|
57
78
|
if (!status)
|
|
58
79
|
return "unknown";
|
|
59
|
-
//
|
|
60
|
-
//
|
|
61
|
-
//
|
|
62
|
-
|
|
63
|
-
return "human";
|
|
80
|
+
// The agent domain FIRST: the server derives the agent from the key owner's
|
|
81
|
+
// `userType === 'agent'` (access/key-identity.ts), whatever the key type, and
|
|
82
|
+
// only agent users carry the synthetic domain. The device flow mints
|
|
83
|
+
// `user_pat` keys owned by a machine agent, so keyType alone is not human.
|
|
64
84
|
const email = (status.userEmail ?? "").toLowerCase();
|
|
65
85
|
if (email.endsWith(AGENT_EMAIL_DOMAIN))
|
|
66
86
|
return "agent";
|
|
87
|
+
if (status.keyType === "user_pat")
|
|
88
|
+
return "human";
|
|
67
89
|
return "unknown";
|
|
68
90
|
}
|
|
69
91
|
/** Best-effort classification. A pod that is down/older must not block the command — it degrades to `unknown`. */
|
|
@@ -89,6 +111,26 @@ export function isAgentReviewRejection(err) {
|
|
|
89
111
|
const haystack = `${err.message} ${err.rawBody}`.toLowerCase();
|
|
90
112
|
return haystack.includes("agent credential") && haystack.includes("proposal");
|
|
91
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Did the pod refuse this approve because it must be reviewed on its page?
|
|
116
|
+
*
|
|
117
|
+
* `proposals.approve` answers a page-only proposal (one whose approval turns a
|
|
118
|
+
* skill, automation or rule on) with CONFLICT, which the Hub door sends as a
|
|
119
|
+
* bare 409 `{ error: <sentence> }` and no machine code. So: 409, and the
|
|
120
|
+
* sentence is the pod's own ("Open it to approve: …"), shown as it came.
|
|
121
|
+
*/
|
|
122
|
+
export function isReviewOnItsPageRefusal(err) {
|
|
123
|
+
return err instanceof HubError && err.status === 409;
|
|
124
|
+
}
|
|
125
|
+
/** Say the pod's sentence and print the page that can approve it, never the raw 409. */
|
|
126
|
+
export function renderReviewOnItsPage(id, cfg, err) {
|
|
127
|
+
const detail = err.message.replace(/^[^:]*\(HTTP 409\):\s*/, "");
|
|
128
|
+
log.warn(`This proposal is approved on its page, not from here.`);
|
|
129
|
+
log.dim(` ${detail}`);
|
|
130
|
+
log.blank();
|
|
131
|
+
log.info(` ${proposalWebLink(cfg.podUrl, id)}`);
|
|
132
|
+
log.dim(` or: synap open proposal ${id}`);
|
|
133
|
+
}
|
|
92
134
|
/** The `synap://` deep link the desktop app registers — `synap open proposal <id>` sends exactly this (open.ts:36-38). */
|
|
93
135
|
export function proposalDeepLink(id) {
|
|
94
136
|
return openAppUrl("proposal", id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credential-class.js","sourceRoot":"","sources":["../../src/lib/credential-class.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"credential-class.js","sourceRoot":"","sources":["../../src/lib/credential-class.ts"],"names":[],"mappings":"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"}
|
|
@@ -123,3 +123,48 @@ export declare function connectThisComputer(podUrl: string, profile: {
|
|
|
123
123
|
agents?: readonly string[];
|
|
124
124
|
wireAgents?: boolean;
|
|
125
125
|
}): Promise<import("./pod.js").LocalPodConfig | null>;
|
|
126
|
+
/**
|
|
127
|
+
* The saved profile holding this computer's own key for `podUrl`, if any: the
|
|
128
|
+
* computer's key from the device flow (`credential: "computer"`,
|
|
129
|
+
* `saveDeviceGrant`). The pod cannot tell a computer that never enrolled from
|
|
130
|
+
* a person's key (decision 59c75aab: it never trusts a client-claimed machine
|
|
131
|
+
* id), so the CLI asks first.
|
|
132
|
+
*/
|
|
133
|
+
export declare function computerProfileFor<P extends {
|
|
134
|
+
config: {
|
|
135
|
+
podUrl: string;
|
|
136
|
+
credential?: string;
|
|
137
|
+
};
|
|
138
|
+
}>(podUrl: string, profiles: P[]): P | undefined;
|
|
139
|
+
/** What the person runs to enrol this computer on `podUrl`. */
|
|
140
|
+
export declare function enrolCommand(podUrl: string, profiles: Array<{
|
|
141
|
+
name: string;
|
|
142
|
+
config: {
|
|
143
|
+
podUrl: string;
|
|
144
|
+
};
|
|
145
|
+
}>): string;
|
|
146
|
+
/** The stop line for an agent asked for on a computer that never enrolled. */
|
|
147
|
+
export declare function notEnrolledMessage(podUrl: string, then: string, command: string): string;
|
|
148
|
+
/**
|
|
149
|
+
* The enrol-first door (founder, 2026-10-31, Q3): `synap agents add` and
|
|
150
|
+
* `synap worker --agent` on a computer that never enrolled on `podUrl` stop
|
|
151
|
+
* here with what to run, and, with a person at the terminal, offer to connect
|
|
152
|
+
* it now (the device flow, `connectThisComputer`). Enrolled: the computer's
|
|
153
|
+
* own key, the one an agent is minted with so it belongs to this computer. The
|
|
154
|
+
* pod's own rule does not change.
|
|
155
|
+
*/
|
|
156
|
+
export declare function ensureComputerEnrolled(podUrl: string, then: string, deps?: {
|
|
157
|
+
profiles?: () => Array<{
|
|
158
|
+
name: string;
|
|
159
|
+
config: import("./pod.js").LocalPodConfig;
|
|
160
|
+
}>;
|
|
161
|
+
interactive?: boolean;
|
|
162
|
+
confirm?: (message: string) => Promise<boolean>;
|
|
163
|
+
connect?: typeof connectThisComputer;
|
|
164
|
+
}): Promise<{
|
|
165
|
+
enrolled: true;
|
|
166
|
+
computerKey: string;
|
|
167
|
+
} | {
|
|
168
|
+
enrolled: false;
|
|
169
|
+
message: string;
|
|
170
|
+
}>;
|
|
@@ -74,6 +74,10 @@ export async function deviceConnect(podUrl, opts, deps = {}) {
|
|
|
74
74
|
headers: { "Content-Type": "application/json" },
|
|
75
75
|
body: JSON.stringify({
|
|
76
76
|
clientName: opts.clientName ?? "Synap CLI",
|
|
77
|
+
// The RAW hostname, never the keys' display label (no `.local`, SYNAP_COMPUTER_NAME):
|
|
78
|
+
// the pod offers "reuse this computer" only on exact equality with the hostname an
|
|
79
|
+
// enrolled computer asked under (`agentMetadata->>'hostname'`, machine-connect.ts).
|
|
80
|
+
// The create door takes no display name; the person names the computer on approval.
|
|
77
81
|
hostname: (opts.hostname ?? os.hostname()).slice(0, 253) || "computer",
|
|
78
82
|
platform: opts.platform ?? process.platform,
|
|
79
83
|
agents: deviceAgentsFor(opts.agents),
|
|
@@ -253,4 +257,60 @@ export async function connectThisComputer(podUrl, profile, opts = {}) {
|
|
|
253
257
|
await wireApprovedAgents(podUrl, config.hubApiKey, outcome.grant);
|
|
254
258
|
return config;
|
|
255
259
|
}
|
|
260
|
+
// ─── enrolment: an agent belongs on an enrolled computer ──────────────────────
|
|
261
|
+
const normPodUrl = (u) => u.replace(/\/+$/, "");
|
|
262
|
+
/**
|
|
263
|
+
* The saved profile holding this computer's own key for `podUrl`, if any: the
|
|
264
|
+
* computer's key from the device flow (`credential: "computer"`,
|
|
265
|
+
* `saveDeviceGrant`). The pod cannot tell a computer that never enrolled from
|
|
266
|
+
* a person's key (decision 59c75aab: it never trusts a client-claimed machine
|
|
267
|
+
* id), so the CLI asks first.
|
|
268
|
+
*/
|
|
269
|
+
export function computerProfileFor(podUrl, profiles) {
|
|
270
|
+
return profiles.find((p) => normPodUrl(p.config.podUrl) === normPodUrl(podUrl) && p.config.credential === "computer");
|
|
271
|
+
}
|
|
272
|
+
/** What the person runs to enrol this computer on `podUrl`. */
|
|
273
|
+
export function enrolCommand(podUrl, profiles) {
|
|
274
|
+
const saved = profiles.find((p) => normPodUrl(p.config.podUrl) === normPodUrl(podUrl));
|
|
275
|
+
// `synap init` keeps a saved key that still works, so a saved pod is enrolled by reconnecting it.
|
|
276
|
+
return saved ? `synap login --reconnect ${saved.name}` : "synap init";
|
|
277
|
+
}
|
|
278
|
+
/** The stop line for an agent asked for on a computer that never enrolled. */
|
|
279
|
+
export function notEnrolledMessage(podUrl, then, command) {
|
|
280
|
+
return `This computer is not enrolled on ${podHost(podUrl)}: run \`${command}\` to connect it, then ${then}. An agent made from a computer that never enrolled belongs to no computer.`;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* The enrol-first door (founder, 2026-10-31, Q3): `synap agents add` and
|
|
284
|
+
* `synap worker --agent` on a computer that never enrolled on `podUrl` stop
|
|
285
|
+
* here with what to run, and, with a person at the terminal, offer to connect
|
|
286
|
+
* it now (the device flow, `connectThisComputer`). Enrolled: the computer's
|
|
287
|
+
* own key, the one an agent is minted with so it belongs to this computer. The
|
|
288
|
+
* pod's own rule does not change.
|
|
289
|
+
*/
|
|
290
|
+
export async function ensureComputerEnrolled(podUrl, then, deps = {}) {
|
|
291
|
+
const profiles = (deps.profiles ?? (await import("./pod.js")).listPodProfiles)();
|
|
292
|
+
const enrolled = computerProfileFor(podUrl, profiles);
|
|
293
|
+
if (enrolled)
|
|
294
|
+
return { enrolled: true, computerKey: enrolled.config.hubApiKey };
|
|
295
|
+
const command = enrolCommand(podUrl, profiles);
|
|
296
|
+
const message = notEnrolledMessage(podUrl, then, command);
|
|
297
|
+
const saved = profiles.find((p) => normPodUrl(p.config.podUrl) === normPodUrl(podUrl));
|
|
298
|
+
const interactive = deps.interactive ?? (!!process.stdin.isTTY && !!process.stdout.isTTY);
|
|
299
|
+
// No saved pod (a key from the environment): `synap init` is the person's to run.
|
|
300
|
+
if (!interactive || !saved)
|
|
301
|
+
return { enrolled: false, message };
|
|
302
|
+
log.warn(message);
|
|
303
|
+
const confirm = deps.confirm ??
|
|
304
|
+
(async (m) => {
|
|
305
|
+
const prompts = (await import("prompts")).default;
|
|
306
|
+
const { ok } = await prompts({ type: "confirm", name: "ok", message: m, initial: true });
|
|
307
|
+
return ok === true;
|
|
308
|
+
});
|
|
309
|
+
if (!(await confirm(`Connect this computer to ${podHost(podUrl)} now?`)))
|
|
310
|
+
return { enrolled: false, message };
|
|
311
|
+
const connected = await (deps.connect ?? connectThisComputer)(podUrl, { name: saved.name });
|
|
312
|
+
return connected?.credential === "computer"
|
|
313
|
+
? { enrolled: true, computerKey: connected.hubApiKey }
|
|
314
|
+
: { enrolled: false, message };
|
|
315
|
+
}
|
|
256
316
|
//# sourceMappingURL=device-connect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-connect.js","sourceRoot":"","sources":["../../src/lib/device-connect.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"device-connect.js","sourceRoot":"","sources":["../../src/lib/device-connect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,aAAa;IACb,gBAAgB;IAChB,QAAQ;IACR,SAAS;IACT,OAAO;IACP,WAAW;IACX,SAAS;IACT,QAAQ;IACR,SAAS;CACD,CAAC;AAGX,iEAAiE;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAAC,OAA0B;IACxD,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAwB,EAAE,CACnD,kBAAwC,CAAC,QAAQ,CAAC,CAAC,CAAC,CACtD,CAAC;IACF,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;AACtD,CAAC;AAmBD,gFAAgF;AAChF,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAE9B;IADX,YACW,MAAqB,EAC9B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,WAAM,GAAN,MAAM,CAAe;QAI9B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAoBD,MAAM,OAAO,GAAG,CAAC,MAAc,EAAU,EAAE;IACzC,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,IAA8F,EAC9F,OAA0B,EAAE;IAE5B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3B,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,uBAAuB,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,WAAW;gBAC1C,sFAAsF;gBACtF,mFAAmF;gBACnF,oFAAoF;gBACpF,oFAAoF;gBACpF,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,UAAU;gBACtE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ;gBAC3C,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;aACrC,CAAC;YACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAA0C,CAAC;QAC3F,MAAM,IAAI,gBAAgB,CACxB,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,MAAM,KAAK,GAAG;YAChB,CAAC,CAAC,GAAG,IAAI,sDAAsD;YAC/D,CAAC,CAAC,GAAG,IAAI,sCAAsC,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAC/H,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAwB,CAAC;IAEvD,2EAA2E;IAC3E,uEAAuE;IACvE,GAAG,CAAC,KAAK,EAAE,CAAC;IACZ,OAAO,CAAC,GAAG,CACT,UAAU,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CACzG,CAAC;IACF,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACnC,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CACnF,IAAI,CAAC,yBAAyB,CAC/B,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;IAC9D,GAAG,CAAC,GAAG,CAAC,+CAA+C,IAAI,oBAAoB,OAAO,QAAQ,CAAC,CAAC;IAEhG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,eAAe,CAAC;IAC/E,IAAI,SAA6B,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAc;YACpC,GAAG,EAAE,GAAG,IAAI,6BAA6B;YACzC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;YACvD,eAAe,EAAE,IAAI;YACrB,UAAU,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK;YAC/C,SAAS,EAAE,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,KAAK;YACzC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAQ,CAAgC,CAAC,YAAY,KAAK,QAAQ;YACrF,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;gBAChB,MAAM,CAAC,GAAI,CAAwB,CAAC,KAAK,CAAC;gBAC1C,IAAI,CAAC,KAAK,eAAe,IAAI,CAAC,KAAK,eAAe,IAAI,CAAC,KAAK,eAAe,EAAE,CAAC;oBAC5E,SAAS,GAAG,CAAC,CAAC;oBACd,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,0EAA0E;YAC1E,cAAc,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;gBAC7B,MAAM,IAAI,GAAG,CAA0C,CAAC;gBACxD,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW;oBAAE,OAAO,OAAO,CAAC;gBAC/C,OAAO,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC;YACnG,CAAC;YACD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;gBAChB,MAAM,CAAC,GAAG,CAA0E,CAAC;gBACrF,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YAC1D,CAAC;SACF,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,SAAS,KAAK,eAAe;YAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,IAAI,GAAG,EAAE,CAAC;QAC9F,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAwC,EACxC,MAAc,IAAI,CAAC,GAAG,EAAE;IAExB,IAAI,CAAC,MAAM,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IACvC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,EAAE,GAAG,GAAG,GAAG,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAClE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,KAAkB,EAClB,OAAyC;IAEzC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACjF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAsC;QAChD,GAAG,KAAK;QACR,MAAM;QACN,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,WAAW,EAAE,KAAK,EAAE,WAAW,IAAI,EAAE;QACrC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;QAC9B,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;QAChC,UAAU,EAAE,UAAU;QACtB,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI;QACjC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAClC,CAAC;IACF,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS;QAAE,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;;QACxE,OAAO,MAAM,CAAC,YAAY,CAAC;IAChC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAExC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAK,GAAG,CAAC,aAAmC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;YACnE,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAA2C,EAAE;gBACpE,SAAS,EAAE,CAAC,CAAC,MAAM;gBACnB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QACD,iBAAiB,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAkB;IACtD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAc,EACd,WAAmB,EACnB,KAAkB;IAElB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC/D,MAAM,kBAAkB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAc,EACd,OAAyC,EACzC,OAA6D,EAAE;IAE/D,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACzB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC3D,MAAM,GAAG,YAAY,EAAE;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAA6B,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAClC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrE,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,iBAAiB,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9E,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK;QAAE,MAAM,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACjG,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAgE,MAAc,EAAE,QAAa;IAC7H,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;AACxH,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,QAA6D;IACxG,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACvF,kGAAkG;IAClG,OAAO,KAAK,CAAC,CAAC,CAAC,2BAA2B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;AACxE,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,IAAY,EAAE,OAAe;IAC9E,OAAO,oCAAoC,OAAO,CAAC,MAAM,CAAC,WAAW,OAAO,0BAA0B,IAAI,6EAA6E,CAAC;AAC1L,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAc,EACd,IAAY,EACZ,OAKI,EAAE;IAEN,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC;IACjF,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,QAAQ;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IAChF,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACvF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1F,kFAAkF;IAClF,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAChE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClB,MAAM,OAAO,GACX,IAAI,CAAC,OAAO;QACZ,CAAC,KAAK,EAAE,CAAS,EAAE,EAAE;YACnB,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YAClD,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACzF,OAAO,EAAE,KAAK,IAAI,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,4BAA4B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC9G,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5F,OAAO,SAAS,EAAE,UAAU,KAAK,UAAU;QACzC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,SAAS,EAAE;QACtD,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Loops stay here deliberately: there is no durable loop row to reverse-
|
|
16
16
|
* serialise (`createLoopFromDefinition` dissolves into playbooks + triggers).
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* The template guide used to assert, unqualified, that a
|
|
19
19
|
* `PackageDefinition` "round-trips". It does not, in this direction, and the
|
|
20
20
|
* consequence is the shape this repo keeps paying for: an author who built one
|
|
21
21
|
* of the things below publishes their workspace, ships a thinner-than-expected
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* Loops stay here deliberately: there is no durable loop row to reverse-
|
|
16
16
|
* serialise (`createLoopFromDefinition` dissolves into playbooks + triggers).
|
|
17
17
|
*
|
|
18
|
-
*
|
|
18
|
+
* The template guide used to assert, unqualified, that a
|
|
19
19
|
* `PackageDefinition` "round-trips". It does not, in this direction, and the
|
|
20
20
|
* consequence is the shape this repo keeps paying for: an author who built one
|
|
21
21
|
* of the things below publishes their workspace, ships a thinner-than-expected
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A GOAL's words as `synap track` prints them — status, verdict, kind of
|
|
3
|
+
* work, uncertainty, criterion marks, what it waits on, who is on it, the
|
|
4
|
+
* end state's label.
|
|
5
|
+
*
|
|
6
|
+
* `@synap-core/types/vocabulary` is the one door for these words, but this
|
|
7
|
+
* package cannot import it (the CLI links only `@synap-core/hub-rest-client`
|
|
8
|
+
* and `@synap-core/workspace-templates`). So each table here is a COPY of the
|
|
9
|
+
* vocabulary's own, held EQUAL — keys and words — by
|
|
10
|
+
* `test/goal-words-parity.test.ts`, which reads the vocabulary's source in
|
|
11
|
+
* the sibling `synap-backend`. Delete this file for a plain import once the
|
|
12
|
+
* CLI depends on a published `@synap-core/types` carrying them.
|
|
13
|
+
*/
|
|
14
|
+
/** `TRACK_STATUS_LABELS` */
|
|
15
|
+
export declare const TRACK_STATUS_LABELS: Readonly<Record<string, string>>;
|
|
16
|
+
/** `TRACK_VERDICT_LABELS` */
|
|
17
|
+
export declare const TRACK_VERDICT_LABELS: Readonly<Record<string, string>>;
|
|
18
|
+
/** `TRACK_WORK_KIND_LABELS` */
|
|
19
|
+
export declare const TRACK_WORK_KIND_LABELS: Readonly<Record<string, string>>;
|
|
20
|
+
/** `TRACK_UNCERTAINTY_LABELS` */
|
|
21
|
+
export declare const TRACK_UNCERTAINTY_LABELS: Readonly<Record<string, string>>;
|
|
22
|
+
/** `GOAL_CRITERION_MARK_LABELS` */
|
|
23
|
+
export declare const GOAL_CRITERION_MARK_LABELS: Readonly<Record<string, string>>;
|
|
24
|
+
/** `WAITING_ON_REASON_LABELS` */
|
|
25
|
+
export declare const WAITING_ON_REASON_LABELS: Readonly<Record<string, string>>;
|
|
26
|
+
/** `TRACK_PARTICIPANT_ROLE_LABELS` (vocabulary/track-participant-words.ts) */
|
|
27
|
+
export declare const TRACK_PARTICIPANT_ROLE_LABELS: Readonly<Record<string, string>>;
|
|
28
|
+
/** `TRACK_COMMITMENT_STATE_LABELS` (vocabulary/track-participant-words.ts) */
|
|
29
|
+
export declare const TRACK_COMMITMENT_STATE_LABELS: Readonly<Record<string, string>>;
|
|
30
|
+
/** `GOAL_FIELD_LABELS` — the goal's stored fields as a person reads them. */
|
|
31
|
+
export declare const GOAL_FIELD_LABELS: Readonly<Record<string, string>>;
|
|
32
|
+
/**
|
|
33
|
+
* The vocabulary's fallback (`humanizeToken`, minus its cased-words list): a
|
|
34
|
+
* value no table names reads as words, never as the raw token.
|
|
35
|
+
*/
|
|
36
|
+
export declare function humanizeToken(token: string): string;
|
|
37
|
+
/** A token through its table, else humanized — `""` for none. */
|
|
38
|
+
export declare function goalWord(table: Readonly<Record<string, string>>, token: string | null | undefined): string;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A GOAL's words as `synap track` prints them — status, verdict, kind of
|
|
3
|
+
* work, uncertainty, criterion marks, what it waits on, who is on it, the
|
|
4
|
+
* end state's label.
|
|
5
|
+
*
|
|
6
|
+
* `@synap-core/types/vocabulary` is the one door for these words, but this
|
|
7
|
+
* package cannot import it (the CLI links only `@synap-core/hub-rest-client`
|
|
8
|
+
* and `@synap-core/workspace-templates`). So each table here is a COPY of the
|
|
9
|
+
* vocabulary's own, held EQUAL — keys and words — by
|
|
10
|
+
* `test/goal-words-parity.test.ts`, which reads the vocabulary's source in
|
|
11
|
+
* the sibling `synap-backend`. Delete this file for a plain import once the
|
|
12
|
+
* CLI depends on a published `@synap-core/types` carrying them.
|
|
13
|
+
*/
|
|
14
|
+
/** `TRACK_STATUS_LABELS` */
|
|
15
|
+
export const TRACK_STATUS_LABELS = {
|
|
16
|
+
proposed: "Draft",
|
|
17
|
+
agreed: "Agreed",
|
|
18
|
+
ready: "Ready",
|
|
19
|
+
active: "Active",
|
|
20
|
+
paused: "Paused",
|
|
21
|
+
completed: "Closed",
|
|
22
|
+
archived: "Dropped",
|
|
23
|
+
};
|
|
24
|
+
/** `TRACK_VERDICT_LABELS` */
|
|
25
|
+
export const TRACK_VERDICT_LABELS = {
|
|
26
|
+
met: "Met",
|
|
27
|
+
partly_met: "Partly met",
|
|
28
|
+
not_met: "Not met",
|
|
29
|
+
retired: "Retired",
|
|
30
|
+
no_longer_needed: "No longer needed",
|
|
31
|
+
impossible: "Impossible",
|
|
32
|
+
replaced: "Replaced",
|
|
33
|
+
mistake: "Created by mistake",
|
|
34
|
+
};
|
|
35
|
+
/** `TRACK_WORK_KIND_LABELS` */
|
|
36
|
+
export const TRACK_WORK_KIND_LABELS = {
|
|
37
|
+
project: "Build",
|
|
38
|
+
flow: "Flow",
|
|
39
|
+
operation: "Operation",
|
|
40
|
+
investigation: "Investigation",
|
|
41
|
+
incident: "Incident",
|
|
42
|
+
commission: "Commission",
|
|
43
|
+
pathway: "Pathway",
|
|
44
|
+
};
|
|
45
|
+
/** `TRACK_UNCERTAINTY_LABELS` */
|
|
46
|
+
export const TRACK_UNCERTAINTY_LABELS = {
|
|
47
|
+
clear: "Clear",
|
|
48
|
+
complicated: "Complicated",
|
|
49
|
+
complex: "Complex",
|
|
50
|
+
chaotic: "Chaotic",
|
|
51
|
+
unknown: "Unknown",
|
|
52
|
+
};
|
|
53
|
+
/** `GOAL_CRITERION_MARK_LABELS` */
|
|
54
|
+
export const GOAL_CRITERION_MARK_LABELS = {
|
|
55
|
+
met: "Met",
|
|
56
|
+
claimed: "Claimed",
|
|
57
|
+
under_way: "Under way",
|
|
58
|
+
not_met: "Not met",
|
|
59
|
+
not_started: "Not started",
|
|
60
|
+
};
|
|
61
|
+
/** `WAITING_ON_REASON_LABELS` */
|
|
62
|
+
export const WAITING_ON_REASON_LABELS = {
|
|
63
|
+
input: "Input",
|
|
64
|
+
approval: "Approval",
|
|
65
|
+
access: "Access",
|
|
66
|
+
another_work: "Other work",
|
|
67
|
+
// Merged into `external` (backend 017224207, D-R4): an old value reads the same.
|
|
68
|
+
outside_world: "Outside party",
|
|
69
|
+
external: "Outside party",
|
|
70
|
+
date: "A date",
|
|
71
|
+
};
|
|
72
|
+
/** `TRACK_PARTICIPANT_ROLE_LABELS` (vocabulary/track-participant-words.ts) */
|
|
73
|
+
export const TRACK_PARTICIPANT_ROLE_LABELS = {
|
|
74
|
+
owner: "Owner",
|
|
75
|
+
judge: "Judge",
|
|
76
|
+
delegate: "Delegate",
|
|
77
|
+
integrator: "Integrator",
|
|
78
|
+
};
|
|
79
|
+
/** `TRACK_COMMITMENT_STATE_LABELS` (vocabulary/track-participant-words.ts) */
|
|
80
|
+
export const TRACK_COMMITMENT_STATE_LABELS = {
|
|
81
|
+
proposed: "Asked",
|
|
82
|
+
accepted: "Accepted",
|
|
83
|
+
countered: "Countered",
|
|
84
|
+
declined: "Declined",
|
|
85
|
+
reported_impossible: "Reported impossible",
|
|
86
|
+
done: "Done",
|
|
87
|
+
};
|
|
88
|
+
/** `GOAL_FIELD_LABELS` — the goal's stored fields as a person reads them. */
|
|
89
|
+
export const GOAL_FIELD_LABELS = {
|
|
90
|
+
endState: "What done looks like",
|
|
91
|
+
criteria: "Done when",
|
|
92
|
+
workKind: "Kind of work",
|
|
93
|
+
uncertainty: "How well the way is known",
|
|
94
|
+
dropConditions: "Drop it if",
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* The vocabulary's fallback (`humanizeToken`, minus its cased-words list): a
|
|
98
|
+
* value no table names reads as words, never as the raw token.
|
|
99
|
+
*/
|
|
100
|
+
export function humanizeToken(token) {
|
|
101
|
+
const tail = token.includes(".") ? token.slice(token.lastIndexOf(".") + 1) : token;
|
|
102
|
+
const words = tail
|
|
103
|
+
.replace(/[_-]+/g, " ")
|
|
104
|
+
.replace(/([a-z0-9])([A-Z])/g, "$1 $2")
|
|
105
|
+
.trim()
|
|
106
|
+
.toLowerCase();
|
|
107
|
+
return words ? words.charAt(0).toUpperCase() + words.slice(1) : "";
|
|
108
|
+
}
|
|
109
|
+
/** A token through its table, else humanized — `""` for none. */
|
|
110
|
+
export function goalWord(table, token) {
|
|
111
|
+
if (!token)
|
|
112
|
+
return "";
|
|
113
|
+
return Object.hasOwn(table, token) ? table[token] : humanizeToken(token);
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=goal-words.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goal-words.js","sourceRoot":"","sources":["../../src/lib/goal-words.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/hub-client.d.ts
CHANGED
|
@@ -1,4 +1,33 @@
|
|
|
1
1
|
import { HubRestClient } from "@synap-core/hub-rest-client";
|
|
2
|
+
/**
|
|
3
|
+
* The pod's `code` on a 403 that refused a LIMITED key at the door (a key
|
|
4
|
+
* whose grant is not unbounded full access), whatever the door: a read no
|
|
5
|
+
* grant bounds yet, or a door that acts on everything the person owns.
|
|
6
|
+
* synap-backend `routers/hub-protocol/_middleware/auth.ts`.
|
|
7
|
+
*/
|
|
8
|
+
export declare const GRANT_DOOR_UNSUPPORTED_CODE = "GRANT_DOOR_UNSUPPORTED";
|
|
9
|
+
/**
|
|
10
|
+
* The code a pod puts on a 403 that refused a write the calling key's GRANT
|
|
11
|
+
* does not cover (synap-backend `utils/grant-write-check.ts` `GRANT_DENIED`,
|
|
12
|
+
* added to every Hub REST denial by `_middleware/grant-denial-code.ts`), as
|
|
13
|
+
* `code` (or `reasonCode`, when the door set its own `code`), with the refused
|
|
14
|
+
* `action`.
|
|
15
|
+
*/
|
|
16
|
+
export declare const GRANT_DENIED_CODE = "GRANT_DENIED";
|
|
17
|
+
/**
|
|
18
|
+
* How an OLDER pod words the same refusal, with no code (`{ error }` only):
|
|
19
|
+
* read only when the body carries no `GRANT_DENIED` code.
|
|
20
|
+
*/
|
|
21
|
+
export declare const GRANT_DENIAL_PREFIX = "This key's grant does not allow";
|
|
22
|
+
/**
|
|
23
|
+
* A 403 the pod sent because the calling key's grant leaves the action out:
|
|
24
|
+
* a limited key (a computer's or an agent's) refused by design, never a
|
|
25
|
+
* missing workspace. `action` is the refused action key when the pod named it
|
|
26
|
+
* (`workspace.update`). The code first; the words only for an older pod.
|
|
27
|
+
*/
|
|
28
|
+
export declare function grantDenialOf(err: unknown): {
|
|
29
|
+
action?: string;
|
|
30
|
+
} | null;
|
|
2
31
|
/**
|
|
3
32
|
* A failed Hub call, carrying the structured facts callers need to branch on.
|
|
4
33
|
*
|
|
@@ -12,6 +41,13 @@ export declare class HubError extends Error {
|
|
|
12
41
|
readonly status: number;
|
|
13
42
|
readonly code?: string;
|
|
14
43
|
readonly reason?: string;
|
|
44
|
+
/**
|
|
45
|
+
* What the pod itself said, without the `Hub <METHOD> <path> failed` prefix
|
|
46
|
+
* `message` carries. Read a hint's words from here, never from `message`:
|
|
47
|
+
* the path is in `message`, so `/workspace/i` over it matched every refusal
|
|
48
|
+
* on a `/workspaces` route (finding de33a075).
|
|
49
|
+
*/
|
|
50
|
+
readonly detail?: string;
|
|
15
51
|
readonly body?: unknown;
|
|
16
52
|
readonly rawBody: string;
|
|
17
53
|
readonly path: string;
|
|
@@ -24,6 +60,7 @@ export declare class HubError extends Error {
|
|
|
24
60
|
message: string;
|
|
25
61
|
status: number;
|
|
26
62
|
code?: string;
|
|
63
|
+
detail?: string;
|
|
27
64
|
reason?: string;
|
|
28
65
|
body?: unknown;
|
|
29
66
|
rawBody: string;
|
|
@@ -60,23 +97,51 @@ export declare class HubNetworkError extends Error {
|
|
|
60
97
|
});
|
|
61
98
|
}
|
|
62
99
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
|
|
100
|
+
* Where to send users who hit a wall. The support door is the ONE customer
|
|
101
|
+
* support entry point shared by every Synap surface (`from=cli` tells support
|
|
102
|
+
* which surface the person came from); Discord stays as the community option.
|
|
103
|
+
*/
|
|
104
|
+
export declare const SUPPORT_URL = "https://synap.live/support?from=cli";
|
|
105
|
+
/**
|
|
106
|
+
* Append a one-line "need help?" footer naming the support door (open a ticket)
|
|
107
|
+
* and the Discord invite. Prints to stderr (same stream as the error it
|
|
108
|
+
* follows, so `2>/dev/null` hides both) and only once per process. Each URL is
|
|
109
|
+
* an OSC-8 hyperlink on an interactive terminal, a plain URL when the stream is
|
|
110
|
+
* redirected/piped.
|
|
67
111
|
*/
|
|
68
|
-
export declare function
|
|
112
|
+
export declare function helpFooterLine(): void;
|
|
69
113
|
/**
|
|
70
114
|
* Print a failed Hub call: its humanized message plus a hint for the classes
|
|
71
115
|
* where the cause is not obvious from the message alone. Lives here rather than
|
|
72
116
|
* in utils/logger so the logger stays domain-agnostic and the taxonomy and its
|
|
73
|
-
* presentation sit in one file. Always closes with the one-time
|
|
117
|
+
* presentation sit in one file. Always closes with the one-time help footer.
|
|
74
118
|
*/
|
|
75
|
-
export declare function renderHubError(err: unknown
|
|
119
|
+
export declare function renderHubError(err: unknown, opts?: {
|
|
120
|
+
/**
|
|
121
|
+
* Where the PERSON does what a limited key was refused (a grant denial):
|
|
122
|
+
* the command knows its own door, this module does not. Without it the
|
|
123
|
+
* hint names full access in general.
|
|
124
|
+
*/
|
|
125
|
+
personDoor?: string;
|
|
126
|
+
}): void;
|
|
76
127
|
export interface HubConfig {
|
|
77
128
|
podUrl: string;
|
|
78
129
|
apiKey: string;
|
|
130
|
+
/**
|
|
131
|
+
* The ACTING identity sent to the pod (body/query/path `userId`). Only an
|
|
132
|
+
* explicit caller id (SYNAP_USER_ID) or the sentinel "cli"; read it through
|
|
133
|
+
* `resolveUserId`, which asks the pod (/users/me) for "cli". Never seed it
|
|
134
|
+
* with a recorded agent id: the pod acts an agent key as the human it is
|
|
135
|
+
* linked to and 403s the agent's own id ("userId does not match the
|
|
136
|
+
* authenticated identity", 2026-10-23). The agent's id is `agentUserId`.
|
|
137
|
+
*/
|
|
79
138
|
userId: string;
|
|
139
|
+
/**
|
|
140
|
+
* The agent principal recorded with this key, when one was — WHO the key
|
|
141
|
+
* is, not who the pod acts as. For recognising the agent's own posts
|
|
142
|
+
* (`resolveAgentUserId`), never sent as the acting user.
|
|
143
|
+
*/
|
|
144
|
+
agentUserId?: string;
|
|
80
145
|
/** Active workspace — from `synap use`, pod default, or env var. Undefined if none configured. */
|
|
81
146
|
workspaceId?: string;
|
|
82
147
|
/** Active project — from `synap project use`, pod default, or env var. Peer of workspaceId; independent. */
|
|
@@ -116,7 +181,21 @@ export declare function attachActiveSessionId(sessionId: string): SessionAttachT
|
|
|
116
181
|
* which reads as the command failing.
|
|
117
182
|
*/
|
|
118
183
|
export declare function detachActiveSessionId(podUrl?: string): string | undefined;
|
|
119
|
-
|
|
184
|
+
/**
|
|
185
|
+
* Never wait more than this in total on one request. 12 waits of up to 75s
|
|
186
|
+
* was ~15 minutes of a terminal that looked hung; past this budget the call
|
|
187
|
+
* fails and says so.
|
|
188
|
+
*/
|
|
189
|
+
export declare const HUB_429_MAX_TOTAL_WAIT_MS = 150000;
|
|
190
|
+
/**
|
|
191
|
+
* The wait (ms) a pod 429 asks for, capped at 75s so a bad proxy header never
|
|
192
|
+
* parks the importer. The pod sends the wait in three shapes, and this reads
|
|
193
|
+
* all of them: the `Retry-After` header (seconds), a JSON body's numeric
|
|
194
|
+
* `retryAfter` (hub commands door) or `cause.retryAfterSec`, and the text
|
|
195
|
+
* "Retry after 60s." the key limiter writes into its message.
|
|
196
|
+
*/
|
|
197
|
+
export declare function retryAfterMs(res: Response, bodyText: string): number;
|
|
198
|
+
export declare function hubGet(path: string, params: Record<string, string | number | undefined>, cfg: HubConfig, timeoutMs?: number): Promise<unknown>;
|
|
120
199
|
export declare function hubPost(path: string, body: unknown, cfg: HubConfig, timeoutMs?: number): Promise<unknown>;
|
|
121
200
|
/**
|
|
122
201
|
* Multipart POST for Hub doors that accept file uploads (e.g. source-file).
|