@kya-os/cli 1.7.0 → 1.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/agent.d.ts +35 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +321 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/build.js +2 -2
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/check.js +3 -3
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/checkpoint-init.d.ts +32 -0
- package/dist/commands/checkpoint-init.d.ts.map +1 -0
- package/dist/commands/checkpoint-init.js +521 -0
- package/dist/commands/checkpoint-init.js.map +1 -0
- package/dist/commands/claim.js +2 -2
- package/dist/commands/claim.js.map +1 -1
- package/dist/commands/dco.d.ts +59 -0
- package/dist/commands/dco.d.ts.map +1 -1
- package/dist/commands/dco.js +280 -5
- package/dist/commands/dco.js.map +1 -1
- package/dist/commands/dev.js +1 -1
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +18 -24
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/env.js +6 -6
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/identity.js +3 -3
- package/dist/commands/identity.js.map +1 -1
- package/dist/commands/init-stages.d.ts +141 -0
- package/dist/commands/init-stages.d.ts.map +1 -0
- package/dist/commands/init-stages.js +684 -0
- package/dist/commands/init-stages.js.map +1 -0
- package/dist/commands/init.d.ts +46 -16
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +229 -279
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/orchestrator.d.ts +18 -0
- package/dist/commands/orchestrator.d.ts.map +1 -0
- package/dist/commands/orchestrator.js +251 -0
- package/dist/commands/orchestrator.js.map +1 -0
- package/dist/commands/register.d.ts +1 -1
- package/dist/commands/register.d.ts.map +1 -1
- package/dist/commands/register.js +35 -7
- package/dist/commands/register.js.map +1 -1
- package/dist/commands/review.d.ts +48 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +220 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/rotate.js +4 -4
- package/dist/commands/rotate.js.map +1 -1
- package/dist/commands/score.d.ts +15 -0
- package/dist/commands/score.d.ts.map +1 -0
- package/dist/commands/score.js +471 -0
- package/dist/commands/score.js.map +1 -0
- package/dist/commands/start.js +3 -3
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.js +1 -1
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/verify.js +6 -6
- package/dist/commands/verify.js.map +1 -1
- package/dist/dco.d.ts +4 -0
- package/dist/dco.d.ts.map +1 -0
- package/dist/dco.js +23 -0
- package/dist/dco.js.map +1 -0
- package/dist/index.js +62 -11
- package/dist/orchestrator/daemon.d.ts +137 -0
- package/dist/orchestrator/daemon.d.ts.map +1 -0
- package/dist/orchestrator/daemon.js +242 -0
- package/dist/orchestrator/daemon.js.map +1 -0
- package/dist/orchestrator/db/dispatches.d.ts +108 -0
- package/dist/orchestrator/db/dispatches.d.ts.map +1 -0
- package/dist/orchestrator/db/dispatches.js +122 -0
- package/dist/orchestrator/db/dispatches.js.map +1 -0
- package/dist/orchestrator/db/index.d.ts +50 -0
- package/dist/orchestrator/db/index.d.ts.map +1 -0
- package/dist/orchestrator/db/index.js +116 -0
- package/dist/orchestrator/db/index.js.map +1 -0
- package/dist/orchestrator/db/journal.d.ts +93 -0
- package/dist/orchestrator/db/journal.d.ts.map +1 -0
- package/dist/orchestrator/db/journal.js +91 -0
- package/dist/orchestrator/db/journal.js.map +1 -0
- package/dist/orchestrator/db/liveness.d.ts +97 -0
- package/dist/orchestrator/db/liveness.d.ts.map +1 -0
- package/dist/orchestrator/db/liveness.js +105 -0
- package/dist/orchestrator/db/liveness.js.map +1 -0
- package/dist/orchestrator/db/mission.d.ts +78 -0
- package/dist/orchestrator/db/mission.d.ts.map +1 -0
- package/dist/orchestrator/db/mission.js +99 -0
- package/dist/orchestrator/db/mission.js.map +1 -0
- package/dist/orchestrator/db/schema.d.ts +14 -0
- package/dist/orchestrator/db/schema.d.ts.map +1 -0
- package/dist/orchestrator/db/schema.js +169 -0
- package/dist/orchestrator/db/schema.js.map +1 -0
- package/dist/orchestrator/db/tickets.d.ts +147 -0
- package/dist/orchestrator/db/tickets.d.ts.map +1 -0
- package/dist/orchestrator/db/tickets.js +238 -0
- package/dist/orchestrator/db/tickets.js.map +1 -0
- package/dist/orchestrator/db/verdicts.d.ts +187 -0
- package/dist/orchestrator/db/verdicts.d.ts.map +1 -0
- package/dist/orchestrator/db/verdicts.js +197 -0
- package/dist/orchestrator/db/verdicts.js.map +1 -0
- package/dist/orchestrator/events.d.ts +69 -0
- package/dist/orchestrator/events.d.ts.map +1 -0
- package/dist/orchestrator/events.js +20 -0
- package/dist/orchestrator/events.js.map +1 -0
- package/dist/orchestrator/github-credential-anchor-sender.d.ts +159 -0
- package/dist/orchestrator/github-credential-anchor-sender.d.ts.map +1 -0
- package/dist/orchestrator/github-credential-anchor-sender.js +313 -0
- package/dist/orchestrator/github-credential-anchor-sender.js.map +1 -0
- package/dist/orchestrator/hub-dispatch.d.ts +120 -0
- package/dist/orchestrator/hub-dispatch.d.ts.map +1 -0
- package/dist/orchestrator/hub-dispatch.js +257 -0
- package/dist/orchestrator/hub-dispatch.js.map +1 -0
- package/dist/orchestrator/hub-observer.d.ts +201 -0
- package/dist/orchestrator/hub-observer.d.ts.map +1 -0
- package/dist/orchestrator/hub-observer.js +474 -0
- package/dist/orchestrator/hub-observer.js.map +1 -0
- package/dist/orchestrator/journal-writer.d.ts +80 -0
- package/dist/orchestrator/journal-writer.d.ts.map +1 -0
- package/dist/orchestrator/journal-writer.js +113 -0
- package/dist/orchestrator/journal-writer.js.map +1 -0
- package/dist/orchestrator/mcp/server.d.ts +136 -0
- package/dist/orchestrator/mcp/server.d.ts.map +1 -0
- package/dist/orchestrator/mcp/server.js +582 -0
- package/dist/orchestrator/mcp/server.js.map +1 -0
- package/dist/orchestrator/mcp/stdio.d.ts +22 -0
- package/dist/orchestrator/mcp/stdio.d.ts.map +1 -0
- package/dist/orchestrator/mcp/stdio.js +51 -0
- package/dist/orchestrator/mcp/stdio.js.map +1 -0
- package/dist/orchestrator/review.d.ts +131 -0
- package/dist/orchestrator/review.d.ts.map +1 -0
- package/dist/orchestrator/review.js +322 -0
- package/dist/orchestrator/review.js.map +1 -0
- package/dist/tui/app.d.ts +33 -0
- package/dist/tui/app.d.ts.map +1 -0
- package/dist/tui/app.js +71 -0
- package/dist/tui/app.js.map +1 -0
- package/dist/tui/components.d.ts +110 -0
- package/dist/tui/components.d.ts.map +1 -0
- package/dist/tui/components.js +118 -0
- package/dist/tui/components.js.map +1 -0
- package/dist/tui/index.d.ts +30 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +95 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/keymap.d.ts +33 -0
- package/dist/tui/keymap.d.ts.map +1 -0
- package/dist/tui/keymap.js +49 -0
- package/dist/tui/keymap.js.map +1 -0
- package/dist/tui/nav.d.ts +29 -0
- package/dist/tui/nav.d.ts.map +1 -0
- package/dist/tui/nav.js +39 -0
- package/dist/tui/nav.js.map +1 -0
- package/dist/tui/sanitize.d.ts +25 -0
- package/dist/tui/sanitize.d.ts.map +1 -0
- package/dist/tui/sanitize.js +36 -0
- package/dist/tui/sanitize.js.map +1 -0
- package/dist/tui/theme.d.ts +32 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +63 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/views/agents.d.ts +67 -0
- package/dist/tui/views/agents.d.ts.map +1 -0
- package/dist/tui/views/agents.js +231 -0
- package/dist/tui/views/agents.js.map +1 -0
- package/dist/tui/views/index.d.ts +93 -0
- package/dist/tui/views/index.d.ts.map +1 -0
- package/dist/tui/views/index.js +150 -0
- package/dist/tui/views/index.js.map +1 -0
- package/dist/tui/views/registry.d.ts +22 -0
- package/dist/tui/views/registry.d.ts.map +1 -0
- package/dist/tui/views/registry.js +110 -0
- package/dist/tui/views/registry.js.map +1 -0
- package/dist/utils/agent/backoff.d.ts +31 -0
- package/dist/utils/agent/backoff.d.ts.map +1 -0
- package/dist/utils/agent/backoff.js +51 -0
- package/dist/utils/agent/backoff.js.map +1 -0
- package/dist/utils/agent/markers.d.ts +87 -0
- package/dist/utils/agent/markers.d.ts.map +1 -0
- package/dist/utils/agent/markers.js +147 -0
- package/dist/utils/agent/markers.js.map +1 -0
- package/dist/utils/agent/review.d.ts +67 -0
- package/dist/utils/agent/review.d.ts.map +1 -0
- package/dist/utils/agent/review.js +305 -0
- package/dist/utils/agent/review.js.map +1 -0
- package/dist/utils/agent/spawn-agent.d.ts +117 -0
- package/dist/utils/agent/spawn-agent.d.ts.map +1 -0
- package/dist/utils/agent/spawn-agent.js +177 -0
- package/dist/utils/agent/spawn-agent.js.map +1 -0
- package/dist/utils/agent/task.d.ts +101 -0
- package/dist/utils/agent/task.d.ts.map +1 -0
- package/dist/utils/agent/task.js +357 -0
- package/dist/utils/agent/task.js.map +1 -0
- package/dist/utils/agent/verify.d.ts +47 -0
- package/dist/utils/agent/verify.d.ts.map +1 -0
- package/dist/utils/agent/verify.js +144 -0
- package/dist/utils/agent/verify.js.map +1 -0
- package/dist/utils/agent-detector.d.ts +48 -0
- package/dist/utils/agent-detector.d.ts.map +1 -0
- package/dist/utils/agent-detector.js +74 -0
- package/dist/utils/agent-detector.js.map +1 -0
- package/dist/utils/agent-profile-stage.d.ts +70 -0
- package/dist/utils/agent-profile-stage.d.ts.map +1 -0
- package/dist/utils/agent-profile-stage.js +153 -0
- package/dist/utils/agent-profile-stage.js.map +1 -0
- package/dist/utils/agent-profiles.d.ts +27 -0
- package/dist/utils/agent-profiles.d.ts.map +1 -0
- package/dist/utils/agent-profiles.js +61 -0
- package/dist/utils/agent-profiles.js.map +1 -0
- package/dist/utils/checkpoint-api.d.ts +86 -0
- package/dist/utils/checkpoint-api.d.ts.map +1 -0
- package/dist/utils/checkpoint-api.js +196 -0
- package/dist/utils/checkpoint-api.js.map +1 -0
- package/dist/utils/checkpoint-env.d.ts +23 -0
- package/dist/utils/checkpoint-env.d.ts.map +1 -0
- package/dist/utils/checkpoint-env.js +59 -0
- package/dist/utils/checkpoint-env.js.map +1 -0
- package/dist/utils/checkpoint-scaffold.d.ts +61 -0
- package/dist/utils/checkpoint-scaffold.d.ts.map +1 -0
- package/dist/utils/checkpoint-scaffold.js +268 -0
- package/dist/utils/checkpoint-scaffold.js.map +1 -0
- package/dist/utils/cli-kit/browser.d.ts +24 -0
- package/dist/utils/cli-kit/browser.d.ts.map +1 -0
- package/dist/utils/cli-kit/browser.js +58 -0
- package/dist/utils/cli-kit/browser.js.map +1 -0
- package/dist/utils/cli-kit/claim-polling.d.ts +18 -0
- package/dist/utils/cli-kit/claim-polling.d.ts.map +1 -0
- package/dist/utils/{claim-polling.js → cli-kit/claim-polling.js} +19 -26
- package/dist/utils/cli-kit/claim-polling.js.map +1 -0
- package/dist/utils/cli-kit/diagnostics.d.ts +9 -0
- package/dist/utils/cli-kit/diagnostics.d.ts.map +1 -0
- package/dist/utils/cli-kit/diagnostics.js +11 -0
- package/dist/utils/cli-kit/diagnostics.js.map +1 -0
- package/dist/utils/cli-kit/fs-safe.d.ts +14 -0
- package/dist/utils/cli-kit/fs-safe.d.ts.map +1 -0
- package/dist/utils/cli-kit/fs-safe.js +20 -0
- package/dist/utils/cli-kit/fs-safe.js.map +1 -0
- package/dist/utils/cli-kit/index.d.ts +15 -0
- package/dist/utils/cli-kit/index.d.ts.map +1 -0
- package/dist/utils/cli-kit/index.js +10 -0
- package/dist/utils/cli-kit/index.js.map +1 -0
- package/dist/utils/cli-kit/json-file.d.ts +21 -0
- package/dist/utils/cli-kit/json-file.d.ts.map +1 -0
- package/dist/utils/cli-kit/json-file.js +51 -0
- package/dist/utils/cli-kit/json-file.js.map +1 -0
- package/dist/utils/cli-kit/marker-block.d.ts +26 -0
- package/dist/utils/cli-kit/marker-block.d.ts.map +1 -0
- package/dist/utils/cli-kit/marker-block.js +61 -0
- package/dist/utils/cli-kit/marker-block.js.map +1 -0
- package/dist/utils/cli-kit/paths.d.ts +15 -0
- package/dist/utils/cli-kit/paths.d.ts.map +1 -0
- package/dist/utils/cli-kit/paths.js +21 -0
- package/dist/utils/cli-kit/paths.js.map +1 -0
- package/dist/utils/cli-kit/secure-storage.d.ts +14 -0
- package/dist/utils/cli-kit/secure-storage.d.ts.map +1 -0
- package/dist/utils/cli-kit/secure-storage.js +20 -0
- package/dist/utils/cli-kit/secure-storage.js.map +1 -0
- package/dist/utils/cli-kit/step-report.d.ts +16 -0
- package/dist/utils/cli-kit/step-report.d.ts.map +1 -0
- package/dist/utils/cli-kit/step-report.js +36 -0
- package/dist/utils/cli-kit/step-report.js.map +1 -0
- package/dist/utils/dco/agent-metadata.d.ts +1 -1
- package/dist/utils/dco/agent-metadata.js +1 -1
- package/dist/utils/dco/agent-metadata.js.map +1 -1
- package/dist/utils/dco/claude-config.d.ts +18 -8
- package/dist/utils/dco/claude-config.d.ts.map +1 -1
- package/dist/utils/dco/claude-config.js +33 -79
- package/dist/utils/dco/claude-config.js.map +1 -1
- package/dist/utils/dco/dispatch.d.ts +134 -0
- package/dist/utils/dco/dispatch.d.ts.map +1 -0
- package/dist/utils/dco/dispatch.js +399 -0
- package/dist/utils/dco/dispatch.js.map +1 -0
- package/dist/utils/dco/fix.d.ts +122 -0
- package/dist/utils/dco/fix.d.ts.map +1 -0
- package/dist/utils/dco/fix.js +560 -0
- package/dist/utils/dco/fix.js.map +1 -0
- package/dist/utils/dco/git-config.d.ts.map +1 -1
- package/dist/utils/dco/git-config.js +5 -3
- package/dist/utils/dco/git-config.js.map +1 -1
- package/dist/utils/dco/github.d.ts +101 -0
- package/dist/utils/dco/github.d.ts.map +1 -1
- package/dist/utils/dco/github.js +133 -0
- package/dist/utils/dco/github.js.map +1 -1
- package/dist/utils/dco/paths.d.ts +1 -8
- package/dist/utils/dco/paths.d.ts.map +1 -1
- package/dist/utils/dco/paths.js +3 -12
- package/dist/utils/dco/paths.js.map +1 -1
- package/dist/utils/dco/render.d.ts +1 -1
- package/dist/utils/dco/render.d.ts.map +1 -1
- package/dist/utils/dco/render.js +4 -21
- package/dist/utils/dco/render.js.map +1 -1
- package/dist/utils/dco/resolve-agent.d.ts +54 -0
- package/dist/utils/dco/resolve-agent.d.ts.map +1 -0
- package/dist/utils/dco/resolve-agent.js +164 -0
- package/dist/utils/dco/resolve-agent.js.map +1 -0
- package/dist/utils/dco/setup.d.ts +10 -7
- package/dist/utils/dco/setup.d.ts.map +1 -1
- package/dist/utils/dco/setup.js +264 -199
- package/dist/utils/dco/setup.js.map +1 -1
- package/dist/utils/dco/signing-key-writer.d.ts +40 -0
- package/dist/utils/dco/signing-key-writer.d.ts.map +1 -0
- package/dist/utils/dco/signing-key-writer.js +76 -0
- package/dist/utils/dco/signing-key-writer.js.map +1 -0
- package/dist/utils/dco/ssh-key.d.ts +50 -0
- package/dist/utils/dco/ssh-key.d.ts.map +1 -1
- package/dist/utils/dco/ssh-key.js +129 -8
- package/dist/utils/dco/ssh-key.js.map +1 -1
- package/dist/utils/dco/status.d.ts +1 -1
- package/dist/utils/dco/status.d.ts.map +1 -1
- package/dist/utils/dco/status.js +3 -3
- package/dist/utils/dco/status.js.map +1 -1
- package/dist/utils/dco/verify.d.ts +170 -0
- package/dist/utils/dco/verify.d.ts.map +1 -0
- package/dist/utils/dco/verify.js +550 -0
- package/dist/utils/dco/verify.js.map +1 -0
- package/dist/utils/dependency-installer.d.ts +37 -0
- package/dist/utils/dependency-installer.d.ts.map +1 -0
- package/dist/utils/dependency-installer.js +32 -0
- package/dist/utils/dependency-installer.js.map +1 -0
- package/dist/utils/github-credential-stage.d.ts +87 -0
- package/dist/utils/github-credential-stage.d.ts.map +1 -0
- package/dist/utils/github-credential-stage.js +168 -0
- package/dist/utils/github-credential-stage.js.map +1 -0
- package/dist/utils/github-credential.d.ts +160 -0
- package/dist/utils/github-credential.d.ts.map +1 -0
- package/dist/utils/github-credential.js +308 -0
- package/dist/utils/github-credential.js.map +1 -0
- package/dist/utils/gitignore.d.ts +17 -0
- package/dist/utils/gitignore.d.ts.map +1 -0
- package/dist/utils/gitignore.js +40 -0
- package/dist/utils/gitignore.js.map +1 -0
- package/dist/utils/hub-config.d.ts +21 -0
- package/dist/utils/hub-config.d.ts.map +1 -0
- package/dist/utils/hub-config.js +28 -0
- package/dist/utils/hub-config.js.map +1 -0
- package/dist/utils/identity-heal.d.ts +16 -0
- package/dist/utils/identity-heal.d.ts.map +1 -0
- package/dist/utils/identity-heal.js +37 -0
- package/dist/utils/identity-heal.js.map +1 -0
- package/dist/utils/init/pipeline.d.ts +74 -0
- package/dist/utils/init/pipeline.d.ts.map +1 -0
- package/dist/utils/init/pipeline.js +96 -0
- package/dist/utils/init/pipeline.js.map +1 -0
- package/dist/utils/poll.d.ts +64 -0
- package/dist/utils/poll.d.ts.map +1 -0
- package/dist/utils/poll.js +76 -0
- package/dist/utils/poll.js.map +1 -0
- package/dist/utils/register-agent-identity.d.ts +67 -0
- package/dist/utils/register-agent-identity.d.ts.map +1 -0
- package/dist/utils/register-agent-identity.js +34 -0
- package/dist/utils/register-agent-identity.js.map +1 -0
- package/dist/utils/review/did-web-key.d.ts +34 -0
- package/dist/utils/review/did-web-key.d.ts.map +1 -0
- package/dist/utils/review/did-web-key.js +104 -0
- package/dist/utils/review/did-web-key.js.map +1 -0
- package/dist/utils/review/load-registry.d.ts +33 -0
- package/dist/utils/review/load-registry.d.ts.map +1 -0
- package/dist/utils/review/load-registry.js +62 -0
- package/dist/utils/review/load-registry.js.map +1 -0
- package/dist/utils/review/verdict-verify.d.ts +43 -0
- package/dist/utils/review/verdict-verify.d.ts.map +1 -0
- package/dist/utils/review/verdict-verify.js +53 -0
- package/dist/utils/review/verdict-verify.js.map +1 -0
- package/dist/utils/review-registry-writer.d.ts +52 -0
- package/dist/utils/review-registry-writer.d.ts.map +1 -0
- package/dist/utils/review-registry-writer.js +79 -0
- package/dist/utils/review-registry-writer.js.map +1 -0
- package/dist/utils/should-install-dependency.d.ts +17 -0
- package/dist/utils/should-install-dependency.d.ts.map +1 -0
- package/dist/utils/should-install-dependency.js +25 -0
- package/dist/utils/should-install-dependency.js.map +1 -0
- package/dist/utils/tool-readiness.d.ts +57 -0
- package/dist/utils/tool-readiness.d.ts.map +1 -0
- package/dist/utils/tool-readiness.js +114 -0
- package/dist/utils/tool-readiness.js.map +1 -0
- package/dist/utils/which.d.ts +2 -0
- package/dist/utils/which.d.ts.map +1 -0
- package/dist/utils/which.js +22 -0
- package/dist/utils/which.js.map +1 -0
- package/dist/version.d.ts +15 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +29 -0
- package/dist/version.js.map +1 -0
- package/package.json +19 -6
- package/dist/utils/claim-polling.d.ts +0 -21
- package/dist/utils/claim-polling.d.ts.map +0 -1
- package/dist/utils/claim-polling.js.map +0 -1
- package/dist/utils/dco/fs-safe.d.ts +0 -14
- package/dist/utils/dco/fs-safe.d.ts.map +0 -1
- package/dist/utils/dco/fs-safe.js +0 -20
- package/dist/utils/dco/fs-safe.js.map +0 -1
|
@@ -46,4 +46,105 @@ export declare function signingKeyAlreadyUploaded(keys: SigningKeyEntry[], publi
|
|
|
46
46
|
* scope without leaving the flow. Requires a TTY; the caller must check.
|
|
47
47
|
*/
|
|
48
48
|
export declare function refreshAuthScope(): Promise<boolean>;
|
|
49
|
+
/**
|
|
50
|
+
* Read a pull request's description. Accepts anything `gh pr view` accepts:
|
|
51
|
+
* a full URL, or a number when run inside the repo.
|
|
52
|
+
*
|
|
53
|
+
* Returns the body verbatim — callers verify its contents rather than trust
|
|
54
|
+
* them, since a PR description is author-controlled text.
|
|
55
|
+
*/
|
|
56
|
+
export declare function getPullRequestBody(target: string): Promise<string>;
|
|
57
|
+
export interface PullRequestSummary {
|
|
58
|
+
number: number;
|
|
59
|
+
headRefOid: string;
|
|
60
|
+
headRefName: string;
|
|
61
|
+
state: string;
|
|
62
|
+
url: string;
|
|
63
|
+
isCrossRepository: boolean;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Fetch the PR's current head SHA, state, and other polling-relevant fields
|
|
67
|
+
* in one call — the same fields the `agent task --watch` / `agent review
|
|
68
|
+
* --watch` loops re-fetch on every poll tick to detect a new head or a
|
|
69
|
+
* closed PR.
|
|
70
|
+
*/
|
|
71
|
+
export declare function getPullRequestSummary(target: string, repo?: string): Promise<PullRequestSummary>;
|
|
72
|
+
/** Read-only unified diff for the PR. Never mutates anything. */
|
|
73
|
+
export declare function getPullRequestDiff(target: string, repo?: string): Promise<string>;
|
|
74
|
+
export interface PullRequestReview {
|
|
75
|
+
id: number;
|
|
76
|
+
author: {
|
|
77
|
+
login: string;
|
|
78
|
+
} | null;
|
|
79
|
+
authorAssociation?: string;
|
|
80
|
+
body: string;
|
|
81
|
+
state: string;
|
|
82
|
+
submittedAt?: string;
|
|
83
|
+
}
|
|
84
|
+
/** Every review posted on the PR, in the order GitHub returns them. */
|
|
85
|
+
export declare function getPullRequestReviews(target: string, repo?: string): Promise<PullRequestReview[]>;
|
|
86
|
+
export interface PullRequestComment {
|
|
87
|
+
id: number;
|
|
88
|
+
author: {
|
|
89
|
+
login: string;
|
|
90
|
+
} | null;
|
|
91
|
+
body: string;
|
|
92
|
+
createdAt?: string;
|
|
93
|
+
}
|
|
94
|
+
/** Every top-level issue comment on the PR (not review comments). */
|
|
95
|
+
export declare function getPullRequestComments(target: string, repo?: string): Promise<PullRequestComment[]>;
|
|
96
|
+
export type PullRequestReviewEvent = "APPROVE" | "REQUEST_CHANGES" | "COMMENT";
|
|
97
|
+
export interface PostPullRequestReviewResult {
|
|
98
|
+
ok: boolean;
|
|
99
|
+
/**
|
|
100
|
+
* True when `gh` rejected the review with GitHub's self-review 422 (the
|
|
101
|
+
* authenticated token owns the PR, so it cannot APPROVE/REQUEST_CHANGES on
|
|
102
|
+
* it). The caller decides what to do next — this function only reports
|
|
103
|
+
* the fact, it does not retry as a COMMENT itself, since the caller is the
|
|
104
|
+
* one that knows to say so in its own output (see review-loop P13's design
|
|
105
|
+
* doc).
|
|
106
|
+
*/
|
|
107
|
+
selfReviewRejected?: boolean;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Post a real GitHub PR review: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`.
|
|
111
|
+
* `body` carries the human-readable findings section plus the fenced
|
|
112
|
+
* `kya-os-signed-verdict` block — this function is content-agnostic, it
|
|
113
|
+
* just posts whatever string it's given.
|
|
114
|
+
*/
|
|
115
|
+
export declare function postPullRequestReview(target: string, options: {
|
|
116
|
+
event: PullRequestReviewEvent;
|
|
117
|
+
body: string;
|
|
118
|
+
}, repo?: string): Promise<PostPullRequestReviewResult>;
|
|
119
|
+
/**
|
|
120
|
+
* Distinct from {@link PullRequestReview} above (review-loop P13's richer
|
|
121
|
+
* shape, for `getPullRequestReviews`) — this is the narrower shape
|
|
122
|
+
* `getPullRequestReviewData` below actually needs: just enough to extract
|
|
123
|
+
* and verify a fenced `kya-os-signed-verdict` block, not a full review
|
|
124
|
+
* record. Renamed off the plain `PullRequestReview` it originally shared
|
|
125
|
+
* with P13's type to resolve the naming collision when both PRs' `gh.ts`
|
|
126
|
+
* additions landed on `main`.
|
|
127
|
+
*/
|
|
128
|
+
export interface VerdictSourceReview {
|
|
129
|
+
/** The reviewer's GitHub login, when `gh` reports one (a deleted/bot account can omit it). */
|
|
130
|
+
login: string;
|
|
131
|
+
body: string;
|
|
132
|
+
}
|
|
133
|
+
export interface PullRequestReviewData {
|
|
134
|
+
reviews: VerdictSourceReview[];
|
|
135
|
+
/** The PR's current head commit SHA — used to flag a signed verdict against a superseded head as stale. */
|
|
136
|
+
headSha: string;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Read a pull request's reviews and current head SHA (review-loop P9
|
|
140
|
+
* commit 3: `kya-os review verify`). Sibling to {@link getPullRequestBody},
|
|
141
|
+
* same `gh pr view` + ENOENT/scope-error handling via the private `gh()`
|
|
142
|
+
* helper above — review bodies are where the publisher (review-publisher.ts,
|
|
143
|
+
* compute) posts the fenced `kya-os-signed-verdict` block this command
|
|
144
|
+
* extracts and verifies.
|
|
145
|
+
*
|
|
146
|
+
* Review/comment bodies are returned verbatim — callers verify their
|
|
147
|
+
* contents rather than trust them, same as {@link getPullRequestBody}.
|
|
148
|
+
*/
|
|
149
|
+
export declare function getPullRequestReviewData(target: string): Promise<PullRequestReviewData>;
|
|
49
150
|
//# sourceMappingURL=github.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/utils/dco/github.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AAEH,eAAO,MAAM,iBAAiB,0BAA0B,CAAC;AACzD,eAAO,MAAM,qBAAqB,2DAA0D,CAAC;AAE7F,qBAAa,mBAAoB,SAAQ,KAAK;;CAO7C;AAED;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,cAAc,4DAAyB;;CAOjD;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AA+BD,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAOtD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAU1D;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAYjD;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAalE;AAED,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,eAAe,EAAE,EACvB,aAAa,EAAE,MAAM,GACpB,OAAO,CAMT;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAWzD"}
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/utils/dco/github.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AAEH,eAAO,MAAM,iBAAiB,0BAA0B,CAAC;AACzD,eAAO,MAAM,qBAAqB,2DAA0D,CAAC;AAE7F,qBAAa,mBAAoB,SAAQ,KAAK;;CAO7C;AAED;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,cAAc,4DAAyB;;CAOjD;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AA+BD,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAOtD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAU1D;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAYjD;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAalE;AAED,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,eAAe,EAAE,EACvB,aAAa,EAAE,MAAM,GACpB,OAAO,CAMT;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAWzD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGxE;AAcD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAwBD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,CAAC,CAQ7B;AAED,iEAAiE;AACjE,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEvF;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,uEAAuE;AACvE,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAK9B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qEAAqE;AACrE,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAK/B;AAED,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAE/E,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,OAAO,CAAC;IACZ;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAmBD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,KAAK,EAAE,sBAAsB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACxD,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,2BAA2B,CAAC,CAmBtC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,8FAA8F;IAC9F,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,2GAA2G;IAC3G,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC,CAiBhC"}
|
package/dist/utils/dco/github.js
CHANGED
|
@@ -151,4 +151,137 @@ export async function refreshAuthScope() {
|
|
|
151
151
|
child.on("close", (code) => resolve(code === 0));
|
|
152
152
|
});
|
|
153
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Read a pull request's description. Accepts anything `gh pr view` accepts:
|
|
156
|
+
* a full URL, or a number when run inside the repo.
|
|
157
|
+
*
|
|
158
|
+
* Returns the body verbatim — callers verify its contents rather than trust
|
|
159
|
+
* them, since a PR description is author-controlled text.
|
|
160
|
+
*/
|
|
161
|
+
export async function getPullRequestBody(target) {
|
|
162
|
+
const stdout = await gh(["pr", "view", target, "--json", "body", "-q", ".body"]);
|
|
163
|
+
return stdout;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Appends `-R <repo>` when `repo` is given, pinning the call to that repo
|
|
167
|
+
* explicitly rather than relying on `gh`'s ambient cwd-derived resolution
|
|
168
|
+
* (which prefers `GH_REPO`/`gh repo set-default` over cwd's git remote) —
|
|
169
|
+
* same reasoning as `fix.ts`'s `-R targetRepo` calls. `agent task/review/verify`
|
|
170
|
+
* commands run against a fresh clone or no checkout at all, so an explicit
|
|
171
|
+
* repo is the norm here, not the exception.
|
|
172
|
+
*/
|
|
173
|
+
function withRepo(args, repo) {
|
|
174
|
+
return repo ? [...args, "-R", repo] : args;
|
|
175
|
+
}
|
|
176
|
+
function parsePullRequestSummary(stdout) {
|
|
177
|
+
const parsed = JSON.parse(stdout);
|
|
178
|
+
if (typeof parsed.number !== "number" ||
|
|
179
|
+
typeof parsed.headRefOid !== "string" ||
|
|
180
|
+
typeof parsed.headRefName !== "string" ||
|
|
181
|
+
typeof parsed.state !== "string" ||
|
|
182
|
+
typeof parsed.url !== "string" ||
|
|
183
|
+
typeof parsed.isCrossRepository !== "boolean") {
|
|
184
|
+
throw new Error("Unexpected response from `gh pr view --json`");
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
number: parsed.number,
|
|
188
|
+
headRefOid: parsed.headRefOid,
|
|
189
|
+
headRefName: parsed.headRefName,
|
|
190
|
+
state: parsed.state,
|
|
191
|
+
url: parsed.url,
|
|
192
|
+
isCrossRepository: parsed.isCrossRepository,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Fetch the PR's current head SHA, state, and other polling-relevant fields
|
|
197
|
+
* in one call — the same fields the `agent task --watch` / `agent review
|
|
198
|
+
* --watch` loops re-fetch on every poll tick to detect a new head or a
|
|
199
|
+
* closed PR.
|
|
200
|
+
*/
|
|
201
|
+
export async function getPullRequestSummary(target, repo) {
|
|
202
|
+
const stdout = await gh(withRepo(["pr", "view", target, "--json", "number,headRefOid,headRefName,state,url,isCrossRepository"], repo));
|
|
203
|
+
return parsePullRequestSummary(stdout);
|
|
204
|
+
}
|
|
205
|
+
/** Read-only unified diff for the PR. Never mutates anything. */
|
|
206
|
+
export async function getPullRequestDiff(target, repo) {
|
|
207
|
+
return gh(withRepo(["pr", "diff", target], repo));
|
|
208
|
+
}
|
|
209
|
+
/** Every review posted on the PR, in the order GitHub returns them. */
|
|
210
|
+
export async function getPullRequestReviews(target, repo) {
|
|
211
|
+
const stdout = await gh(withRepo(["pr", "view", target, "--json", "reviews", "-q", ".reviews"], repo));
|
|
212
|
+
return JSON.parse(stdout);
|
|
213
|
+
}
|
|
214
|
+
/** Every top-level issue comment on the PR (not review comments). */
|
|
215
|
+
export async function getPullRequestComments(target, repo) {
|
|
216
|
+
const stdout = await gh(withRepo(["pr", "view", target, "--json", "comments", "-q", ".comments"], repo));
|
|
217
|
+
return JSON.parse(stdout);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* GitHub's self-review rejection names the PR as the requester's own —
|
|
221
|
+
* distinct from a scope/auth/rate-limit failure, neither of which should
|
|
222
|
+
* be silently swallowed as "must be a self-review". Confirmed live against
|
|
223
|
+
* `gh pr review`'s actual error text: `gh`'s GraphQL mutation surfaces this
|
|
224
|
+
* as `GraphQL: Review Can not request changes on your own pull request
|
|
225
|
+
* (addPullRequestReview)` — a GraphQL-level error with no REST-style
|
|
226
|
+
* "HTTP 422" status string anywhere in it, so matching on the phrase alone
|
|
227
|
+
* (not a status code that isn't actually present) is what the real error
|
|
228
|
+
* requires.
|
|
229
|
+
*/
|
|
230
|
+
function isSelfReviewError(error) {
|
|
231
|
+
const err = error;
|
|
232
|
+
const message = `${err?.stderr ?? ""} ${err?.message ?? ""}`;
|
|
233
|
+
return /own pull request/i.test(message);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Post a real GitHub PR review: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`.
|
|
237
|
+
* `body` carries the human-readable findings section plus the fenced
|
|
238
|
+
* `kya-os-signed-verdict` block — this function is content-agnostic, it
|
|
239
|
+
* just posts whatever string it's given.
|
|
240
|
+
*/
|
|
241
|
+
export async function postPullRequestReview(target, options, repo) {
|
|
242
|
+
const flag = options.event === "APPROVE"
|
|
243
|
+
? "--approve"
|
|
244
|
+
: options.event === "REQUEST_CHANGES"
|
|
245
|
+
? "--request-changes"
|
|
246
|
+
: "--comment";
|
|
247
|
+
try {
|
|
248
|
+
await gh(withRepo(["pr", "review", target, flag, "--body", options.body], repo));
|
|
249
|
+
return { ok: true };
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
if (error instanceof GhNotInstalledError) {
|
|
253
|
+
throw error;
|
|
254
|
+
}
|
|
255
|
+
if (isSelfReviewError(error)) {
|
|
256
|
+
return { ok: false, selfReviewRejected: true };
|
|
257
|
+
}
|
|
258
|
+
throw error;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Read a pull request's reviews and current head SHA (review-loop P9
|
|
263
|
+
* commit 3: `kya-os review verify`). Sibling to {@link getPullRequestBody},
|
|
264
|
+
* same `gh pr view` + ENOENT/scope-error handling via the private `gh()`
|
|
265
|
+
* helper above — review bodies are where the publisher (review-publisher.ts,
|
|
266
|
+
* compute) posts the fenced `kya-os-signed-verdict` block this command
|
|
267
|
+
* extracts and verifies.
|
|
268
|
+
*
|
|
269
|
+
* Review/comment bodies are returned verbatim — callers verify their
|
|
270
|
+
* contents rather than trust them, same as {@link getPullRequestBody}.
|
|
271
|
+
*/
|
|
272
|
+
export async function getPullRequestReviewData(target) {
|
|
273
|
+
const stdout = await gh([
|
|
274
|
+
"pr",
|
|
275
|
+
"view",
|
|
276
|
+
target,
|
|
277
|
+
"--json",
|
|
278
|
+
"reviews,headRefOid",
|
|
279
|
+
]);
|
|
280
|
+
const parsed = JSON.parse(stdout);
|
|
281
|
+
const reviews = (parsed.reviews ?? []).map((r) => ({
|
|
282
|
+
login: r.author?.login ?? "unknown",
|
|
283
|
+
body: r.body ?? "",
|
|
284
|
+
}));
|
|
285
|
+
return { reviews, headSha: parsed.headRefOid ?? "" };
|
|
286
|
+
}
|
|
154
287
|
//# sourceMappingURL=github.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/utils/dco/github.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../../src/utils/dco/github.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Slugs come from .mcpi/agent.json, AGENT_SLUG, or an interactive prompt.
|
|
3
|
-
* The file-based sources are attacker-influenceable in a cloned repo, and the
|
|
4
|
-
* slug becomes a filename under the keys directory, so every source must pass
|
|
5
|
-
* the same shape check the interactive prompt enforces.
|
|
6
|
-
*/
|
|
7
|
-
export declare const SLUG_PATTERN: RegExp;
|
|
8
|
-
export declare function isValidSlug(slug: string): boolean;
|
|
1
|
+
export { SLUG_PATTERN, isValidSlug } from "../cli-kit/index.js";
|
|
9
2
|
/** Directory holding converted SSH signing keys, always absolute. */
|
|
10
3
|
export declare function keysDir(): string;
|
|
11
4
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/utils/dco/paths.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/utils/dco/paths.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEhE,qEAAqE;AACrE,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOnD"}
|
package/dist/utils/dco/paths.js
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
|
-
import { homedir } from "os";
|
|
2
1
|
import { join, resolve } from "path";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* The file-based sources are attacker-influenceable in a cloned repo, and the
|
|
6
|
-
* slug becomes a filename under the keys directory, so every source must pass
|
|
7
|
-
* the same shape check the interactive prompt enforces.
|
|
8
|
-
*/
|
|
9
|
-
export const SLUG_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
|
|
10
|
-
export function isValidSlug(slug) {
|
|
11
|
-
return SLUG_PATTERN.test(slug);
|
|
12
|
-
}
|
|
2
|
+
import { SLUG_PATTERN, isValidSlug, stateDir } from "../cli-kit/index.js";
|
|
3
|
+
export { SLUG_PATTERN, isValidSlug } from "../cli-kit/index.js";
|
|
13
4
|
/** Directory holding converted SSH signing keys, always absolute. */
|
|
14
5
|
export function keysDir() {
|
|
15
|
-
return resolve(process.env.MCPI_KEYS_DIR ||
|
|
6
|
+
return resolve(process.env.MCPI_KEYS_DIR || stateDir("mcpi", "keys"));
|
|
16
7
|
}
|
|
17
8
|
/**
|
|
18
9
|
* Path for a slug's private key. Throws on slugs that fail validation so a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/dco/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/dco/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEhE,qEAAqE;AACrE,MAAM,UAAU,OAAO;IACrB,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,uBAAuB,IAAI,iBAAiB,YAAY,uCAAuC,CAChG,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { DcoSetupResult } from "./setup.js";
|
|
2
|
-
/** Human-readable summary of a setup run, shared by `
|
|
2
|
+
/** Human-readable summary of a setup run, shared by `dco setup` and the register/init funnel. */
|
|
3
3
|
export declare function renderSetupResult(result: DcoSetupResult): void;
|
|
4
4
|
//# sourceMappingURL=render.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/utils/dco/render.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/utils/dco/render.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,iGAAiG;AACjG,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAoD9D"}
|
package/dist/utils/dco/render.js
CHANGED
|
@@ -1,19 +1,6 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
case "done":
|
|
5
|
-
return chalk.green("done");
|
|
6
|
-
case "skipped":
|
|
7
|
-
return chalk.gray("skipped");
|
|
8
|
-
case "would-change":
|
|
9
|
-
return chalk.cyan("would change");
|
|
10
|
-
case "action-required":
|
|
11
|
-
return chalk.yellow("action required");
|
|
12
|
-
case "failed":
|
|
13
|
-
return chalk.red("failed");
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
/** Human-readable summary of a setup run, shared by `mcpi dco setup` and the register/init funnel. */
|
|
2
|
+
import { renderSteps } from "../cli-kit/index.js";
|
|
3
|
+
/** Human-readable summary of a setup run, shared by `dco setup` and the register/init funnel. */
|
|
17
4
|
export function renderSetupResult(result) {
|
|
18
5
|
console.log("");
|
|
19
6
|
if (result.agent) {
|
|
@@ -23,12 +10,8 @@ export function renderSetupResult(result) {
|
|
|
23
10
|
console.log(` ${chalk.bold("Human:")} ${result.human.name} ${chalk.gray(`<${result.human.email}>`)}`);
|
|
24
11
|
}
|
|
25
12
|
console.log("");
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
console.log(` ${step.title.padEnd(width)} ${statusLabel(step.status)}`);
|
|
29
|
-
if (step.detail && step.status !== "done" && step.status !== "skipped") {
|
|
30
|
-
console.log(` ${" ".repeat(width)} ${chalk.gray(step.detail)}`);
|
|
31
|
-
}
|
|
13
|
+
for (const line of renderSteps(result.steps)) {
|
|
14
|
+
console.log(line);
|
|
32
15
|
}
|
|
33
16
|
console.log("");
|
|
34
17
|
if (result.metadataPersistWarning) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/utils/dco/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/utils/dco/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,iGAAiG;AACjG,MAAM,UAAU,iBAAiB,CAAC,MAAsB;IACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,CACxF,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAC1F,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,+DAA+D,MAAM,CAAC,sBAAsB,kDAAkD,CAC/I,CACF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC;IACrE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAChE,CAAC;IACJ,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,oEAAoE,CACrE,CACF,CAAC;IACJ,CAAC;SAAM,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,uEAAuE,CACxE,CACF,CAAC;IACJ,CAAC;SAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,6EAA6E,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAClG,CACF,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-only view of "which agent identity is configured in THIS checkout
|
|
3
|
+
* right now", surfaced by `dco whoami`.
|
|
4
|
+
*
|
|
5
|
+
* This exists because `dco setup` used to bake an agent's name/URL/DID
|
|
6
|
+
* as literal strings into the CLAUDE.md instructions it writes. That file is
|
|
7
|
+
* committed, so the literal values only ever reflected whichever agent
|
|
8
|
+
* happened to run `dco setup` first. Any other agent later working in the
|
|
9
|
+
* same repo (the common case for a repo that receives dispatched work from
|
|
10
|
+
* multiple agents) would have its PRs and commit trailers falsely attributed
|
|
11
|
+
* to that first agent. `resolveAgentIdentity` gives CLAUDE.md's instructions
|
|
12
|
+
* something to point at instead of a value: "run this, use its output",
|
|
13
|
+
* so the byline is always whichever identity is actually active locally.
|
|
14
|
+
*/
|
|
15
|
+
export interface ResolvedAgentIdentity {
|
|
16
|
+
/**
|
|
17
|
+
* Canonical `did:web:knowthat.ai:agents:<slug>` derived from the validated
|
|
18
|
+
* slug, NOT `.mcpi/identity.json`'s stored value verbatim. A checkout
|
|
19
|
+
* registered before the registration-time heal (init.ts/register.ts patch
|
|
20
|
+
* identity.json's `did` in place at registration) can still hold the
|
|
21
|
+
* unresolvable placeholder minted at `kya-os init` time
|
|
22
|
+
* (`did:web:localhost:3000:agents:<8hex>`); this is what actually resolves,
|
|
23
|
+
* matching the derivation `dco dispatch <slug>` uses.
|
|
24
|
+
*/
|
|
25
|
+
did: string;
|
|
26
|
+
name: string;
|
|
27
|
+
slug: string;
|
|
28
|
+
url: string;
|
|
29
|
+
email: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Resolves the current agent identity from local, gitignored `.mcpi/` state.
|
|
33
|
+
* Returns null when there is nothing complete and trustworthy to report.
|
|
34
|
+
* Callers (notably `dco whoami`) must treat that as "no agent
|
|
35
|
+
* identity configured here", not as an error, since it's the ordinary state
|
|
36
|
+
* for a checkout that never ran `kya-os register`.
|
|
37
|
+
*
|
|
38
|
+
* Deliberately independent of `runDcoSetup`'s own identity resolution in
|
|
39
|
+
* setup.ts: that function additionally prompts, persists, and throws on a
|
|
40
|
+
* DID mismatch to steer a human through fixing local config, none of which
|
|
41
|
+
* is safe here: this is invoked live, mid-task, by an LLM composing a PR
|
|
42
|
+
* or commit, and must always degrade to null rather than prompt or throw.
|
|
43
|
+
* The whole body runs under a catch-all for exactly that reason: every
|
|
44
|
+
* individual step is written to fail closed already, but the guarantee that
|
|
45
|
+
* matters to callers is "never throws", not "every input we thought of is
|
|
46
|
+
* handled". A caller relying on the latter is one overlooked shape away
|
|
47
|
+
* from `dco whoami --json` crashing instead of printing
|
|
48
|
+
* `{"configured": false}`.
|
|
49
|
+
*
|
|
50
|
+
* The returned `did` is the canonical slug-derived value, not identity.json's
|
|
51
|
+
* stored `did` verbatim — see `ResolvedAgentIdentity.did`.
|
|
52
|
+
*/
|
|
53
|
+
export declare function resolveAgentIdentity(cwd: string): Promise<ResolvedAgentIdentity | null>;
|
|
54
|
+
//# sourceMappingURL=resolve-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-agent.d.ts","sourceRoot":"","sources":["../../../src/utils/dco/resolve-agent.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;OAQG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAiGD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAuDvC"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { execFile } from "child_process";
|
|
2
|
+
import { existsSync, readFileSync } from "fs";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
import { promisify } from "util";
|
|
5
|
+
import { readAgentMetadata } from "./agent-metadata.js";
|
|
6
|
+
import { isValidSlug } from "./paths.js";
|
|
7
|
+
const execFileAsync = promisify(execFile);
|
|
8
|
+
const MAX_FIELD_LENGTH = 200;
|
|
9
|
+
const DID_PATTERN = /^did:[a-z0-9]+:[A-Za-z0-9.\-_:%]+$/;
|
|
10
|
+
/**
|
|
11
|
+
* Strip control characters (including CR/LF) and collapse whitespace. Values
|
|
12
|
+
* read here end up printed to stdout and copied verbatim into a PR
|
|
13
|
+
* description or commit trailer by an LLM, so a crafted value with embedded
|
|
14
|
+
* newlines must not be able to smuggle extra instructions into that text.
|
|
15
|
+
*/
|
|
16
|
+
function singleLine(value) {
|
|
17
|
+
// eslint-disable-next-line no-control-regex
|
|
18
|
+
return value.replace(/[\u0000-\u001f\u007f]+/g, " ").trim();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* `readAgentMetadata` only type-asserts its JSON.parse result as
|
|
22
|
+
* `AgentMetadata`; nothing enforces at runtime that `name`/`slug`/`url` are
|
|
23
|
+
* actually strings. A field that's a truthy non-string (an array has
|
|
24
|
+
* `.length` too) would otherwise reach `singleLine`'s `.replace()` call and
|
|
25
|
+
* throw, which violates this module's whole contract of degrading to null
|
|
26
|
+
* instead of throwing. Takes `unknown` rather than `string` so every call
|
|
27
|
+
* site is forced through this runtime check before treating a field as text,
|
|
28
|
+
* not just past a compile-time type it was never validated against.
|
|
29
|
+
*/
|
|
30
|
+
function isSaneField(value) {
|
|
31
|
+
return (typeof value === "string" && value.length > 0 && value.length <= MAX_FIELD_LENGTH);
|
|
32
|
+
}
|
|
33
|
+
function isValidDid(value) {
|
|
34
|
+
return value.length <= MAX_FIELD_LENGTH && DID_PATTERN.test(value);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The PR byline links to the agent's registry page, so its host must be the
|
|
38
|
+
* trusted registry. A url from .mcpi/agent.json in an untrusted repo could
|
|
39
|
+
* otherwise point the byline at an arbitrary off-site (phishing) link.
|
|
40
|
+
* Mirrors the identical check `dco setup` applies before persisting
|
|
41
|
+
* agent.json in the first place (packages/cli/src/utils/dco/setup.ts).
|
|
42
|
+
*/
|
|
43
|
+
function isTrustedAgentUrl(value) {
|
|
44
|
+
try {
|
|
45
|
+
const url = new URL(value);
|
|
46
|
+
if (url.protocol !== "https:") {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
const host = url.hostname.toLowerCase();
|
|
50
|
+
return host === "knowthat.ai" || host.endsWith(".knowthat.ai");
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* `dco setup` refuses a `.mcpi/identity.json` that's tracked by git,
|
|
58
|
+
* because a cloned repo could ship one to make signing use a key its author
|
|
59
|
+
* controls (see setup.ts's `isIdentityTrackedByGit`). The same threat
|
|
60
|
+
* applies here for the same reason `ensureGitignored` was added to
|
|
61
|
+
* `register.ts`: gitignoring `.mcpi/` after the fact does not untrack a
|
|
62
|
+
* file that was already committed. Without this check, a hostile committed
|
|
63
|
+
* `.mcpi/identity.json` + `agent.json` pair would resolve as a trustworthy
|
|
64
|
+
* identity and get echoed into every PR/commit trailer an agent composes
|
|
65
|
+
* from this repo.
|
|
66
|
+
*/
|
|
67
|
+
async function isMcpiTrackedByGit(cwd) {
|
|
68
|
+
try {
|
|
69
|
+
const { stdout } = await execFileAsync("git", ["ls-files", "--", ".mcpi/identity.json", ".mcpi/agent.json"], { cwd, encoding: "utf8" });
|
|
70
|
+
return stdout.trim().length > 0;
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function readIdentityDid(cwd) {
|
|
77
|
+
const path = join(cwd, ".mcpi", "identity.json");
|
|
78
|
+
if (!existsSync(path)) {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
const parsed = JSON.parse(readFileSync(path, "utf-8"));
|
|
83
|
+
const did = parsed && typeof parsed === "object" && typeof parsed.did === "string"
|
|
84
|
+
? parsed.did
|
|
85
|
+
: undefined;
|
|
86
|
+
return did && isValidDid(did) ? did : undefined;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return undefined;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Resolves the current agent identity from local, gitignored `.mcpi/` state.
|
|
94
|
+
* Returns null when there is nothing complete and trustworthy to report.
|
|
95
|
+
* Callers (notably `dco whoami`) must treat that as "no agent
|
|
96
|
+
* identity configured here", not as an error, since it's the ordinary state
|
|
97
|
+
* for a checkout that never ran `kya-os register`.
|
|
98
|
+
*
|
|
99
|
+
* Deliberately independent of `runDcoSetup`'s own identity resolution in
|
|
100
|
+
* setup.ts: that function additionally prompts, persists, and throws on a
|
|
101
|
+
* DID mismatch to steer a human through fixing local config, none of which
|
|
102
|
+
* is safe here: this is invoked live, mid-task, by an LLM composing a PR
|
|
103
|
+
* or commit, and must always degrade to null rather than prompt or throw.
|
|
104
|
+
* The whole body runs under a catch-all for exactly that reason: every
|
|
105
|
+
* individual step is written to fail closed already, but the guarantee that
|
|
106
|
+
* matters to callers is "never throws", not "every input we thought of is
|
|
107
|
+
* handled". A caller relying on the latter is one overlooked shape away
|
|
108
|
+
* from `dco whoami --json` crashing instead of printing
|
|
109
|
+
* `{"configured": false}`.
|
|
110
|
+
*
|
|
111
|
+
* The returned `did` is the canonical slug-derived value, not identity.json's
|
|
112
|
+
* stored `did` verbatim — see `ResolvedAgentIdentity.did`.
|
|
113
|
+
*/
|
|
114
|
+
export async function resolveAgentIdentity(cwd) {
|
|
115
|
+
try {
|
|
116
|
+
const did = readIdentityDid(cwd);
|
|
117
|
+
if (!did) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
if (await isMcpiTrackedByGit(cwd)) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
const metadata = readAgentMetadata(cwd);
|
|
124
|
+
// Only trust agent.json when it's cryptographically bound to this
|
|
125
|
+
// identity (same rule setup.ts uses before persisting it) and shaped
|
|
126
|
+
// like a real slug (same rule signingKeyPath enforces). Unbound or
|
|
127
|
+
// malformed metadata could be planted in an untrusted repo and must not
|
|
128
|
+
// be allowed to spoof the reported name/slug/url, or to break out of
|
|
129
|
+
// the markdown link syntax CLAUDE.md tells an agent to build from these
|
|
130
|
+
// fields. isSaneField is a real runtime type guard (not just a length
|
|
131
|
+
// check) because metadata.name/slug/url are only type-asserted as
|
|
132
|
+
// strings by readAgentMetadata, never validated as one.
|
|
133
|
+
if (!metadata ||
|
|
134
|
+
metadata.did !== did ||
|
|
135
|
+
!isSaneField(metadata.name) ||
|
|
136
|
+
!isSaneField(metadata.slug) ||
|
|
137
|
+
!isValidSlug(metadata.slug)) {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
const name = singleLine(metadata.name);
|
|
141
|
+
const slug = metadata.slug;
|
|
142
|
+
const url = isSaneField(metadata.url) && isTrustedAgentUrl(metadata.url)
|
|
143
|
+
? singleLine(metadata.url)
|
|
144
|
+
: `https://knowthat.ai/agents/${slug}`;
|
|
145
|
+
// Returned did is the canonical did:web derived from the validated slug,
|
|
146
|
+
// not identity.json's `did` verbatim: a checkout registered before the
|
|
147
|
+
// write-time heal (init.ts/register.ts) can still hold the unresolvable
|
|
148
|
+
// placeholder minted at `kya-os init` time. `did` above is still the trust
|
|
149
|
+
// anchor that binds metadata.did to identity.json (proves this checkout
|
|
150
|
+
// came from `kya-os register`), just not what gets reported to a caller
|
|
151
|
+
// about to embed it in a PR description or commit trailer.
|
|
152
|
+
return {
|
|
153
|
+
did: `did:web:knowthat.ai:agents:${slug}`,
|
|
154
|
+
name,
|
|
155
|
+
slug,
|
|
156
|
+
url,
|
|
157
|
+
email: `${slug}@agents.knowthat.ai`,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=resolve-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-agent.js","sourceRoot":"","sources":["../../../src/utils/dco/resolve-agent.ts"],"names":[],"mappings":"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"}
|