@kya-os/cli 1.7.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/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 +38 -1
- package/dist/commands/dco.d.ts.map +1 -1
- package/dist/commands/dco.js +180 -7
- 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.d.ts.map +1 -1
- package/dist/commands/init.js +103 -65
- package/dist/commands/init.js.map +1 -1
- 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/rotate.js +4 -4
- package/dist/commands/rotate.js.map +1 -1
- 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 +21 -0
- package/dist/dco.js.map +1 -0
- package/dist/index.js +18 -15
- 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 +59 -0
- package/dist/utils/dco/dispatch.d.ts.map +1 -0
- package/dist/utils/dco/dispatch.js +332 -0
- package/dist/utils/dco/dispatch.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 +8 -0
- package/dist/utils/dco/github.d.ts.map +1 -1
- package/dist/utils/dco/github.js +11 -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 +304 -202
- package/dist/utils/dco/setup.js.map +1 -1
- package/dist/utils/dco/ssh-key.d.ts +13 -0
- package/dist/utils/dco/ssh-key.d.ts.map +1 -1
- package/dist/utils/dco/ssh-key.js +21 -0
- 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 +114 -0
- package/dist/utils/dco/verify.d.ts.map +1 -0
- package/dist/utils/dco/verify.js +383 -0
- package/dist/utils/dco/verify.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/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/poll.d.ts +50 -0
- package/dist/utils/poll.d.ts.map +1 -0
- package/dist/utils/poll.js +73 -0
- package/dist/utils/poll.js.map +1 -0
- package/package.json +4 -3
- 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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../../src/utils/dco/dispatch.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA8BD,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAYD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CASR;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE;AAoDD,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAqP5B"}
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
import { execFile } from "child_process";
|
|
2
|
+
import { existsSync, lstatSync, readFileSync, rmSync } from "fs";
|
|
3
|
+
import { basename, join } from "path";
|
|
4
|
+
import { promisify } from "util";
|
|
5
|
+
import { writeFileAtomicSafe } from "../cli-kit/index.js";
|
|
6
|
+
import { getPullRequestBody } from "./github.js";
|
|
7
|
+
import { signingKeyPath } from "./paths.js";
|
|
8
|
+
import { resolveAgentIdentity } from "./resolve-agent.js";
|
|
9
|
+
import { RESOLVE_TIMEOUT_MS, didWebToHttpsUrl, hasAgentDidClaim, verifyPrAttribution, } from "./verify.js";
|
|
10
|
+
const execFileAsync = promisify(execFile);
|
|
11
|
+
async function run(cmd, args, cwd) {
|
|
12
|
+
const { stdout } = await execFileAsync(cmd, args, {
|
|
13
|
+
cwd,
|
|
14
|
+
encoding: "utf8",
|
|
15
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
16
|
+
});
|
|
17
|
+
return stdout.trim();
|
|
18
|
+
}
|
|
19
|
+
async function gitSucceeds(args, cwd) {
|
|
20
|
+
try {
|
|
21
|
+
await run("git", args, cwd);
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function errorMessage(error) {
|
|
29
|
+
if (error && typeof error === "object" && "stderr" in error) {
|
|
30
|
+
const stderr = String(error.stderr ?? "").trim();
|
|
31
|
+
if (stderr) {
|
|
32
|
+
return stderr;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return error instanceof Error ? error.message : String(error);
|
|
36
|
+
}
|
|
37
|
+
// commitlint's default subject-max-length is 100; ~72 for the PR title
|
|
38
|
+
// mirrors GitHub's own soft wrap, and ~60 after the "docs: " prefix keeps the
|
|
39
|
+
// full commit subject comfortably inside that even in stricter repos.
|
|
40
|
+
const MAX_TITLE_LENGTH = 72;
|
|
41
|
+
const MAX_COMMIT_SUBJECT_LENGTH = 60;
|
|
42
|
+
function truncate(value, maxLength) {
|
|
43
|
+
return value.length > maxLength ? value.slice(0, maxLength).trimEnd() : value;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Resolve the PR title: the explicit `--title`, or the description's first
|
|
47
|
+
* NON-EMPTY line when omitted (a description that opens with a blank line,
|
|
48
|
+
* e.g. "\n\nActual title", must not yield an empty title). Either way it's
|
|
49
|
+
* truncated to a safe length, since the title also seeds the commit subject
|
|
50
|
+
* and a raw description can run long.
|
|
51
|
+
*/
|
|
52
|
+
export function deriveDispatchTitle(description, explicitTitle) {
|
|
53
|
+
if (explicitTitle && explicitTitle.trim().length > 0) {
|
|
54
|
+
return truncate(explicitTitle.trim(), MAX_TITLE_LENGTH);
|
|
55
|
+
}
|
|
56
|
+
const firstNonEmptyLine = description
|
|
57
|
+
.split(/\r?\n/)
|
|
58
|
+
.map((line) => line.trim())
|
|
59
|
+
.find((line) => line.length > 0);
|
|
60
|
+
return truncate(firstNonEmptyLine ?? "", MAX_TITLE_LENGTH);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Lowercase subject on purpose: commitlint `subject-case` hooks reject an
|
|
64
|
+
* uppercase one, and lowercase passes everywhere. Truncated separately from
|
|
65
|
+
* the title (after the "docs: " prefix) so a title near MAX_TITLE_LENGTH
|
|
66
|
+
* still yields a commit subject well inside commitlint's own length rule.
|
|
67
|
+
*/
|
|
68
|
+
export function buildDispatchCommitSubject(title) {
|
|
69
|
+
return `docs: ${truncate(title.toLowerCase(), MAX_COMMIT_SUBJECT_LENGTH)}`;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Extra `git -c` config prepended to the commit so it signs with the exact
|
|
73
|
+
* key belonging to the agent this run is attributing the PR to, regardless
|
|
74
|
+
* of what the repo's ambient config says (and so agent-slug mode works from
|
|
75
|
+
* any repo, with no `.mcpi/` state there at all).
|
|
76
|
+
*/
|
|
77
|
+
function buildSigningConfig(keyPath) {
|
|
78
|
+
return [
|
|
79
|
+
"-c",
|
|
80
|
+
"gpg.format=ssh",
|
|
81
|
+
"-c",
|
|
82
|
+
"commit.gpgsign=true",
|
|
83
|
+
"-c",
|
|
84
|
+
`user.signingkey=${keyPath}`,
|
|
85
|
+
];
|
|
86
|
+
}
|
|
87
|
+
/** Fail fast when the DID isn't claimed/resolvable, BEFORE any git or GitHub
|
|
88
|
+
* side effects: an unclaimed agent otherwise only surfaces as a verification
|
|
89
|
+
* failure after a junk repo, branch, and PR already exist. */
|
|
90
|
+
async function resolveDidPreflight(did) {
|
|
91
|
+
const documentUrl = didWebToHttpsUrl(did);
|
|
92
|
+
if (!documentUrl) {
|
|
93
|
+
return `could not derive a document URL from ${did}`;
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
const controller = new AbortController();
|
|
97
|
+
const timer = setTimeout(() => controller.abort(), RESOLVE_TIMEOUT_MS);
|
|
98
|
+
let response;
|
|
99
|
+
try {
|
|
100
|
+
response = await fetch(documentUrl, {
|
|
101
|
+
signal: controller.signal,
|
|
102
|
+
redirect: "manual",
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
clearTimeout(timer);
|
|
107
|
+
}
|
|
108
|
+
if (!response.ok) {
|
|
109
|
+
return `HTTP ${response.status} from ${documentUrl}`;
|
|
110
|
+
}
|
|
111
|
+
const doc = (await response.json());
|
|
112
|
+
if (doc?.id !== did) {
|
|
113
|
+
return `${documentUrl} describes ${String(doc?.id)}, not ${did}`;
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
return `${documentUrl} unreachable: ${errorMessage(error)}`;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
export async function runDcoDispatch(cwd, description, options = {}) {
|
|
122
|
+
if (!description || description.trim().length === 0) {
|
|
123
|
+
return { ok: false, failure: "A PR description is required." };
|
|
124
|
+
}
|
|
125
|
+
// Dispatch always appends its own authoritative `Agent DID:` line. A
|
|
126
|
+
// description that already carries one would put two DIDs in the PR body,
|
|
127
|
+
// and `extractAgentDid` treats a multi-DID body as unverifiable, so the PR
|
|
128
|
+
// would be created and then fail its own verification. `hasAgentDidClaim`
|
|
129
|
+
// uses the exact same line pattern the verifier does, so it catches the
|
|
130
|
+
// backticked, mid-line form the managed CLAUDE.md block emits, not just a
|
|
131
|
+
// line-start one. Reject before any side effects.
|
|
132
|
+
if (hasAgentDidClaim(description)) {
|
|
133
|
+
return {
|
|
134
|
+
ok: false,
|
|
135
|
+
failure: "The description already contains an `Agent DID:` line. Dispatch adds the attribution automatically; pass only your prose so the PR body has exactly one Agent DID line.",
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
let agent;
|
|
139
|
+
let signingConfig;
|
|
140
|
+
if (options.agent) {
|
|
141
|
+
let keyPath;
|
|
142
|
+
try {
|
|
143
|
+
keyPath = signingKeyPath(options.agent);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
return { ok: false, failure: errorMessage(error) };
|
|
147
|
+
}
|
|
148
|
+
if (!existsSync(keyPath)) {
|
|
149
|
+
return {
|
|
150
|
+
ok: false,
|
|
151
|
+
failure: `No signing key for agent "${options.agent}" at ${keyPath}. Run \`dco setup ${options.agent}\` once, or check the slug.`,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
agent = {
|
|
155
|
+
name: options.agent,
|
|
156
|
+
slug: options.agent,
|
|
157
|
+
url: `https://knowthat.ai/agents/${options.agent}`,
|
|
158
|
+
};
|
|
159
|
+
signingConfig = buildSigningConfig(keyPath);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
const resolved = await resolveAgentIdentity(cwd);
|
|
163
|
+
if (!resolved) {
|
|
164
|
+
return {
|
|
165
|
+
ok: false,
|
|
166
|
+
failure: "No agent identity configured in this checkout. Run `kya-os register` + `dco setup` here, or dispatch as an existing agent by passing its slug (`dco dispatch <slug> <description>`).",
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
agent = { name: resolved.name, slug: resolved.slug, url: resolved.url };
|
|
170
|
+
// Sign with the SAME agent's key the PR is attributed to, exactly like
|
|
171
|
+
// agent-slug mode, instead of silently relying on whatever ambient repo git
|
|
172
|
+
// config happens to be configured: without this, a checkout signed by a
|
|
173
|
+
// different key (or unsigned) than the one named in the Agent DID line
|
|
174
|
+
// would produce a commit whose signature and attribution disagree.
|
|
175
|
+
let keyPath;
|
|
176
|
+
try {
|
|
177
|
+
keyPath = signingKeyPath(resolved.slug);
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
return { ok: false, failure: errorMessage(error) };
|
|
181
|
+
}
|
|
182
|
+
if (!existsSync(keyPath)) {
|
|
183
|
+
return {
|
|
184
|
+
ok: false,
|
|
185
|
+
failure: `No signing key for agent "${resolved.slug}" at ${keyPath}. Run \`dco setup\` in this checkout, then dispatch again.`,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
signingConfig = buildSigningConfig(keyPath);
|
|
189
|
+
}
|
|
190
|
+
const title = deriveDispatchTitle(description, options.title);
|
|
191
|
+
// Built from the slug instead of trusting identity.json's `did`, which can
|
|
192
|
+
// still hold the unresolvable pre-claim placeholder (known bug; see the
|
|
193
|
+
// quickstart runbook). The slug is what registration actually persisted.
|
|
194
|
+
const did = `did:web:knowthat.ai:agents:${agent.slug}`;
|
|
195
|
+
const result = {
|
|
196
|
+
ok: false,
|
|
197
|
+
agent: { name: agent.name, slug: agent.slug },
|
|
198
|
+
did,
|
|
199
|
+
title,
|
|
200
|
+
};
|
|
201
|
+
const unresolvable = await resolveDidPreflight(did);
|
|
202
|
+
if (unresolvable) {
|
|
203
|
+
result.failure =
|
|
204
|
+
`Agent DID ${did} does not resolve (${unresolvable}). ` +
|
|
205
|
+
"Only a claimed registry agent can sign a verifiable PR. Dispatch with the slug of a claimed agent (`dco dispatch <slug> <description>`), or claim this one first.";
|
|
206
|
+
return result;
|
|
207
|
+
}
|
|
208
|
+
try {
|
|
209
|
+
if (!(await gitSucceeds(["rev-parse", "--is-inside-work-tree"], cwd))) {
|
|
210
|
+
await run("git", ["init", "-q"], cwd);
|
|
211
|
+
}
|
|
212
|
+
if (!(await gitSucceeds(["rev-parse", "HEAD"], cwd))) {
|
|
213
|
+
// Symlink-safe: a planted `.gitkeep` symlink in an untrusted cwd must
|
|
214
|
+
// not make this follow it and clobber an arbitrary file.
|
|
215
|
+
writeFileAtomicSafe(join(cwd, ".gitkeep"), "# demo repo\n");
|
|
216
|
+
await run("git", ["add", ".gitkeep"], cwd);
|
|
217
|
+
// Signed like the demo commit below: without this, agent-slug mode's
|
|
218
|
+
// cold-start init commit would fall back to ambient repo signing
|
|
219
|
+
// config (or none at all), landing an unsigned or wrong-key commit
|
|
220
|
+
// before the attributed one even exists. `-- .gitkeep` restricts the
|
|
221
|
+
// commit to that one file so nothing else already in the index rides
|
|
222
|
+
// along, and hooks are disabled so a stale prepare-commit-msg hook
|
|
223
|
+
// can't stamp this boilerplate commit with the wrong agent.
|
|
224
|
+
await run("git", [
|
|
225
|
+
"-c",
|
|
226
|
+
"core.hooksPath=/dev/null",
|
|
227
|
+
...signingConfig,
|
|
228
|
+
"commit",
|
|
229
|
+
"-q",
|
|
230
|
+
"-m",
|
|
231
|
+
"chore: init",
|
|
232
|
+
"--",
|
|
233
|
+
".gitkeep",
|
|
234
|
+
], cwd);
|
|
235
|
+
}
|
|
236
|
+
if (!(await gitSucceeds(["remote", "get-url", "origin"], cwd))) {
|
|
237
|
+
const repoName = `${basename(cwd)}-${Math.floor(Date.now() / 1000)}`;
|
|
238
|
+
await run("gh", [
|
|
239
|
+
"repo",
|
|
240
|
+
"create",
|
|
241
|
+
repoName,
|
|
242
|
+
"--private",
|
|
243
|
+
"--source=.",
|
|
244
|
+
"--remote=origin",
|
|
245
|
+
"--push",
|
|
246
|
+
], cwd);
|
|
247
|
+
result.createdRemote = repoName;
|
|
248
|
+
}
|
|
249
|
+
const branch = `dco-demo-${Math.floor(Date.now() / 1000)}`;
|
|
250
|
+
await run("git", ["checkout", "-b", branch], cwd);
|
|
251
|
+
result.branch = branch;
|
|
252
|
+
// Symlink-safe append. Two vectors, both closed here:
|
|
253
|
+
// - Read: if a planted DCO-DEMO.md is a symlink, remove it (lstatSync
|
|
254
|
+
// does not follow the link) rather than readFileSync through it, so
|
|
255
|
+
// another file's contents can never be read into the committed demo
|
|
256
|
+
// file. A regular file is read and appended to as normal.
|
|
257
|
+
// - Write: writeFileAtomicSafe creates its temp sibling with O_EXCL and
|
|
258
|
+
// renameSync-replaces the destination inode without following it, so
|
|
259
|
+
// the write never lands outside the working tree.
|
|
260
|
+
const dcoDemoPath = join(cwd, "DCO-DEMO.md");
|
|
261
|
+
if (existsSync(dcoDemoPath) && lstatSync(dcoDemoPath).isSymbolicLink()) {
|
|
262
|
+
rmSync(dcoDemoPath);
|
|
263
|
+
}
|
|
264
|
+
const existingDcoDemo = existsSync(dcoDemoPath)
|
|
265
|
+
? readFileSync(dcoDemoPath, "utf-8")
|
|
266
|
+
: "";
|
|
267
|
+
writeFileAtomicSafe(dcoDemoPath, `${existingDcoDemo}${new Date().toISOString()} - ${title} - signed by ${agent.name} (${did})\n`);
|
|
268
|
+
await run("git", ["add", "DCO-DEMO.md"], cwd);
|
|
269
|
+
const commitSubject = buildDispatchCommitSubject(title);
|
|
270
|
+
// Own the trailers explicitly instead of relying on the setup-installed
|
|
271
|
+
// prepare-commit-msg hook: that hook is baked to whichever agent ran
|
|
272
|
+
// `dco setup`, which for a dispatch as a different slug (or in a fresh
|
|
273
|
+
// directory with no hook at all) would attribute the commit to the wrong
|
|
274
|
+
// agent, or to no agent. Disabling hooks and adding the sign-off (`-s`,
|
|
275
|
+
// the human committer) plus a Co-authored-by for THIS dispatch's agent
|
|
276
|
+
// keeps the commit trailer, the signing key, and the PR `Agent DID:` line
|
|
277
|
+
// all pointing at the same identity. `-- DCO-DEMO.md` restricts the
|
|
278
|
+
// commit to the demo file so unrelated staged changes never ride along.
|
|
279
|
+
const coAuthoredTrailer = `Co-authored-by: ${agent.name} <${agent.slug}@agents.knowthat.ai>`;
|
|
280
|
+
await run("git", [
|
|
281
|
+
"-c",
|
|
282
|
+
"core.hooksPath=/dev/null",
|
|
283
|
+
...signingConfig,
|
|
284
|
+
"commit",
|
|
285
|
+
"-s",
|
|
286
|
+
"--trailer",
|
|
287
|
+
coAuthoredTrailer,
|
|
288
|
+
"-m",
|
|
289
|
+
commitSubject,
|
|
290
|
+
"--",
|
|
291
|
+
"DCO-DEMO.md",
|
|
292
|
+
], cwd);
|
|
293
|
+
result.commitSha = await run("git", ["rev-parse", "HEAD"], cwd);
|
|
294
|
+
// `git log --show-signature` needs gpg.ssh.allowedSignersFile locally and
|
|
295
|
+
// misreports otherwise; the raw gpgsig header is the reliable check.
|
|
296
|
+
const rawCommit = await run("git", ["cat-file", "commit", "HEAD"], cwd);
|
|
297
|
+
result.signed = /^gpgsig /m.test(rawCommit);
|
|
298
|
+
if (!result.signed) {
|
|
299
|
+
result.failure =
|
|
300
|
+
"The commit was created but is NOT signed. Run `dco setup` in this repo, then dispatch again.";
|
|
301
|
+
return result;
|
|
302
|
+
}
|
|
303
|
+
await run("git", ["push", "-u", "origin", "HEAD"], cwd);
|
|
304
|
+
const body = [
|
|
305
|
+
description,
|
|
306
|
+
"",
|
|
307
|
+
`Agent: [${agent.name}](${agent.url})`,
|
|
308
|
+
`Agent DID: ${did}`,
|
|
309
|
+
].join("\n");
|
|
310
|
+
const prOutput = await run("gh", ["pr", "create", "--title", title, "--body", body], cwd);
|
|
311
|
+
const urlMatch = prOutput.match(/https:\/\/github\.com\/\S+\/pull\/\d+/);
|
|
312
|
+
if (!urlMatch) {
|
|
313
|
+
result.failure = `Could not find a PR URL in \`gh pr create\` output: ${prOutput}`;
|
|
314
|
+
return result;
|
|
315
|
+
}
|
|
316
|
+
result.prUrl = urlMatch[0];
|
|
317
|
+
const prBody = await getPullRequestBody(result.prUrl);
|
|
318
|
+
const verification = await verifyPrAttribution(prBody);
|
|
319
|
+
result.verified = verification.ok;
|
|
320
|
+
if (!verification.ok) {
|
|
321
|
+
result.failure = `PR created (${result.prUrl}) but attribution verification failed: ${verification.detail ?? verification.reason ?? "unknown"}`;
|
|
322
|
+
return result;
|
|
323
|
+
}
|
|
324
|
+
result.ok = true;
|
|
325
|
+
return result;
|
|
326
|
+
}
|
|
327
|
+
catch (error) {
|
|
328
|
+
result.failure = errorMessage(error);
|
|
329
|
+
return result;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=dispatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../../src/utils/dco/dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-config.d.ts","sourceRoot":"","sources":["../../../src/utils/dco/git-config.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAE7C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAUD,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAM7D;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxB;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GACzB,OAAO,CAAC,eAAe,EAAE,CAAC,CAS5B;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACtC;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"git-config.d.ts","sourceRoot":"","sources":["../../../src/utils/dco/git-config.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,WAAW,oBAAoB,CAAC;AAE7C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAUD,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAM7D;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxB;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GACzB,OAAO,CAAC,eAAe,EAAE,CAAC,CAS5B;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,gBAAgB,GAAG,SAAS,CAAC;CACtC;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAqBpE;AAMD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,WAAW,GACjB,MAAM,CAwBR;AAED,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,SAAS,GACT,WAAW,GACX,cAAc,GACd,mBAAmB,GACnB,cAAc,CAAC;AAEnB;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA8CtD"}
|
|
@@ -2,7 +2,7 @@ import { execFile } from "child_process";
|
|
|
2
2
|
import { promisify } from "util";
|
|
3
3
|
import { existsSync, mkdirSync, readFileSync, realpathSync } from "fs";
|
|
4
4
|
import { isAbsolute, join, resolve, sep } from "path";
|
|
5
|
-
import { writeFileAtomicSafe } from "
|
|
5
|
+
import { writeFileAtomicSafe } from "../cli-kit/index.js";
|
|
6
6
|
const execFileAsync = promisify(execFile);
|
|
7
7
|
/** Resolve symlinks when the path exists; fall back to the input otherwise. */
|
|
8
8
|
function realpathIfExists(path) {
|
|
@@ -72,7 +72,9 @@ export async function getHooksDir(cwd) {
|
|
|
72
72
|
if (hooksPath) {
|
|
73
73
|
// core.hooksPath is relative to the working-tree root, not cwd.
|
|
74
74
|
const topLevel = await git(["rev-parse", "--show-toplevel"], cwd);
|
|
75
|
-
const dir = isAbsolute(hooksPath)
|
|
75
|
+
const dir = isAbsolute(hooksPath)
|
|
76
|
+
? hooksPath
|
|
77
|
+
: resolve(topLevel, hooksPath);
|
|
76
78
|
return { dir, source: "core.hooksPath" };
|
|
77
79
|
}
|
|
78
80
|
// --git-path resolves "hooks" against the COMMON git dir (where git actually
|
|
@@ -92,7 +94,7 @@ export function buildTrailerHook(human, agent) {
|
|
|
92
94
|
const coAuthoredBy = shQuote(`Co-authored-by: ${agent.name} <${agent.email}>`);
|
|
93
95
|
return `#!/bin/sh
|
|
94
96
|
${HOOK_MARKER} v1
|
|
95
|
-
# Managed by \`
|
|
97
|
+
# Managed by \`dco setup\`. Appends the DCO sign-off and agent
|
|
96
98
|
# attribution trailers to commit messages when they are missing.
|
|
97
99
|
|
|
98
100
|
COMMIT_MSG_FILE="$1"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-config.js","sourceRoot":"","sources":["../../../src/utils/dco/git-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"git-config.js","sourceRoot":"","sources":["../../../src/utils/dco/git-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,4 +46,12 @@ 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>;
|
|
49
57
|
//# 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"}
|
package/dist/utils/dco/github.js
CHANGED
|
@@ -151,4 +151,15 @@ 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
|
+
}
|
|
154
165
|
//# 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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AACzD,MAAM,CAAC,MAAM,qBAAqB,GAAG,oCAAoC,iBAAiB,EAAE,CAAC;AAE7F,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C;QACE,KAAK,CACH,mGAAmG,CACpG,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IAErC;QACE,KAAK,CACH,oCAAoC,iBAAiB,gBAAgB,qBAAqB,EAAE,CAC7F,CAAC;QAJK,mBAAc,GAAG,qBAAqB,CAAC;QAK9C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAcD,KAAK,UAAU,EAAE,CAAC,IAAc;IAC9B,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE;YACjD,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;SAC5B,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAK,KAA+B,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxD,MAAM,IAAI,mBAAmB,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,MAAM,GAAG,GAAG,KAA8C,CAAC;IAC3D,MAAM,OAAO,GAAG,GAAG,GAAG,EAAE,MAAM,IAAI,EAAE,IAAI,GAAG,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;IAC7D,uEAAuE;IACvE,2EAA2E;IAC3E,yEAAyE;IACzE,gDAAgD;IAChD,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QACnC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QACxB,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,CACzC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;YACzC,MAAM,KAAK,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;QACtB,KAAK;QACL,MAAM;QACN,MAAM;QACN,uCAAuC;KACxC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAW,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,2BAA2B,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,uBAAuB,EAAE,YAAY,CAAC,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAsB,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;YACzC,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,YAAY,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,aAAqB,EACrB,KAAa;IAEb,IAAI,CAAC;QACH,MAAM,EAAE,CAAC;YACP,KAAK;YACL,uBAAuB;YACvB,IAAI;YACJ,OAAO,aAAa,EAAE;YACtB,IAAI;YACJ,SAAS,KAAK,EAAE;SACjB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;YACzC,MAAM,KAAK,CAAC;QACd,CAAC;QACD,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,YAAY,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAAuB,EACvB,aAAqB;IAErB,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CACjB,IAAI,EACJ,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,iBAAiB,CAAC,EAChE,EAAE,KAAK,EAAE,SAAS,EAAE,CACrB,CAAC;QACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAc;IACrD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACjF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -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"}
|