@davidahmann/mill 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +335 -0
- package/dist/audit/repository.d.ts +8 -0
- package/dist/audit/repository.d.ts.map +1 -0
- package/dist/audit/repository.js +232 -0
- package/dist/audit/repository.js.map +1 -0
- package/dist/cli-program.d.ts +12 -0
- package/dist/cli-program.d.ts.map +1 -0
- package/dist/cli-program.js +1020 -0
- package/dist/cli-program.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/lock.d.ts +12 -0
- package/dist/config/lock.d.ts.map +1 -0
- package/dist/config/lock.js +83 -0
- package/dist/config/lock.js.map +1 -0
- package/dist/contracts/canonical.d.ts +7 -0
- package/dist/contracts/canonical.d.ts.map +1 -0
- package/dist/contracts/canonical.js +30 -0
- package/dist/contracts/canonical.js.map +1 -0
- package/dist/contracts/schemas.d.ts +2705 -0
- package/dist/contracts/schemas.d.ts.map +1 -0
- package/dist/contracts/schemas.js +988 -0
- package/dist/contracts/schemas.js.map +1 -0
- package/dist/doctor.d.ts +21 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +138 -0
- package/dist/doctor.js.map +1 -0
- package/dist/errors.d.ts +18 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +31 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/intake/prd.d.ts +14 -0
- package/dist/intake/prd.d.ts.map +1 -0
- package/dist/intake/prd.js +39 -0
- package/dist/intake/prd.js.map +1 -0
- package/dist/planning/impact.d.ts +59 -0
- package/dist/planning/impact.d.ts.map +1 -0
- package/dist/planning/impact.js +400 -0
- package/dist/planning/impact.js.map +1 -0
- package/dist/planning/specification.d.ts +42 -0
- package/dist/planning/specification.d.ts.map +1 -0
- package/dist/planning/specification.js +235 -0
- package/dist/planning/specification.js.map +1 -0
- package/dist/qualification/public-alpha.d.ts +16 -0
- package/dist/qualification/public-alpha.d.ts.map +1 -0
- package/dist/qualification/public-alpha.js +128 -0
- package/dist/qualification/public-alpha.js.map +1 -0
- package/dist/recipes/node-typescript-next-web.d.ts +19 -0
- package/dist/recipes/node-typescript-next-web.d.ts.map +1 -0
- package/dist/recipes/node-typescript-next-web.js +136 -0
- package/dist/recipes/node-typescript-next-web.js.map +1 -0
- package/dist/repository/integration.d.ts +58 -0
- package/dist/repository/integration.d.ts.map +1 -0
- package/dist/repository/integration.js +1385 -0
- package/dist/repository/integration.js.map +1 -0
- package/dist/repository/scan.d.ts +27 -0
- package/dist/repository/scan.d.ts.map +1 -0
- package/dist/repository/scan.js +388 -0
- package/dist/repository/scan.js.map +1 -0
- package/dist/result.d.ts +23 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +24 -0
- package/dist/result.js.map +1 -0
- package/dist/runtime/codex.d.ts +28 -0
- package/dist/runtime/codex.d.ts.map +1 -0
- package/dist/runtime/codex.js +439 -0
- package/dist/runtime/codex.js.map +1 -0
- package/dist/runtime/context.d.ts +10 -0
- package/dist/runtime/context.d.ts.map +1 -0
- package/dist/runtime/context.js +151 -0
- package/dist/runtime/context.js.map +1 -0
- package/dist/runtime/delivery.d.ts +58 -0
- package/dist/runtime/delivery.d.ts.map +1 -0
- package/dist/runtime/delivery.js +1073 -0
- package/dist/runtime/delivery.js.map +1 -0
- package/dist/runtime/dependencies.d.ts +19 -0
- package/dist/runtime/dependencies.d.ts.map +1 -0
- package/dist/runtime/dependencies.js +495 -0
- package/dist/runtime/dependencies.js.map +1 -0
- package/dist/runtime/github.d.ts +112 -0
- package/dist/runtime/github.d.ts.map +1 -0
- package/dist/runtime/github.js +510 -0
- package/dist/runtime/github.js.map +1 -0
- package/dist/runtime/inputs.d.ts +24 -0
- package/dist/runtime/inputs.d.ts.map +1 -0
- package/dist/runtime/inputs.js +237 -0
- package/dist/runtime/inputs.js.map +1 -0
- package/dist/runtime/lease.d.ts +11 -0
- package/dist/runtime/lease.d.ts.map +1 -0
- package/dist/runtime/lease.js +52 -0
- package/dist/runtime/lease.js.map +1 -0
- package/dist/runtime/lifecycle.d.ts +87 -0
- package/dist/runtime/lifecycle.d.ts.map +1 -0
- package/dist/runtime/lifecycle.js +1024 -0
- package/dist/runtime/lifecycle.js.map +1 -0
- package/dist/runtime/process.d.ts +39 -0
- package/dist/runtime/process.d.ts.map +1 -0
- package/dist/runtime/process.js +304 -0
- package/dist/runtime/process.js.map +1 -0
- package/dist/runtime/repository.d.ts +36 -0
- package/dist/runtime/repository.d.ts.map +1 -0
- package/dist/runtime/repository.js +458 -0
- package/dist/runtime/repository.js.map +1 -0
- package/dist/runtime/state.d.ts +121 -0
- package/dist/runtime/state.d.ts.map +1 -0
- package/dist/runtime/state.js +1017 -0
- package/dist/runtime/state.js.map +1 -0
- package/dist/runtime/verifier.d.ts +31 -0
- package/dist/runtime/verifier.d.ts.map +1 -0
- package/dist/runtime/verifier.js +478 -0
- package/dist/runtime/verifier.js.map +1 -0
- package/dist/runtime/worker.d.ts +67 -0
- package/dist/runtime/worker.d.ts.map +1 -0
- package/dist/runtime/worker.js +34 -0
- package/dist/runtime/worker.js.map +1 -0
- package/dist/security/safe-path.d.ts +3 -0
- package/dist/security/safe-path.d.ts.map +1 -0
- package/dist/security/safe-path.js +102 -0
- package/dist/security/safe-path.js.map +1 -0
- package/dist/version.d.ts +4 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -0
- package/dist/workflows/founder.d.ts +33 -0
- package/dist/workflows/founder.d.ts.map +1 -0
- package/dist/workflows/founder.js +422 -0
- package/dist/workflows/founder.js.map +1 -0
- package/package.json +79 -0
- package/recipes/node-typescript-next-web/.github/workflows/ci.yml +34 -0
- package/recipes/node-typescript-next-web/.node-version +1 -0
- package/recipes/node-typescript-next-web/.tool-versions +1 -0
- package/recipes/node-typescript-next-web/AGENTS.md +44 -0
- package/recipes/node-typescript-next-web/README.md +16 -0
- package/recipes/node-typescript-next-web/WORKFLOW.md +6 -0
- package/recipes/node-typescript-next-web/app/api/health/route.ts +5 -0
- package/recipes/node-typescript-next-web/app/layout.tsx +19 -0
- package/recipes/node-typescript-next-web/app/page.tsx +12 -0
- package/recipes/node-typescript-next-web/app/styles.css +21 -0
- package/recipes/node-typescript-next-web/docs/development.md +16 -0
- package/recipes/node-typescript-next-web/eslint.config.mjs +9 -0
- package/recipes/node-typescript-next-web/gitignore.template +5 -0
- package/recipes/node-typescript-next-web/next-env.d.ts +7 -0
- package/recipes/node-typescript-next-web/next.config.ts +11 -0
- package/recipes/node-typescript-next-web/package-lock.json +7540 -0
- package/recipes/node-typescript-next-web/package.json +39 -0
- package/recipes/node-typescript-next-web/playwright.config.ts +23 -0
- package/recipes/node-typescript-next-web/recipe.yaml +71 -0
- package/recipes/node-typescript-next-web/scripts/check-package.mjs +3 -0
- package/recipes/node-typescript-next-web/src/health.ts +3 -0
- package/recipes/node-typescript-next-web/test/browser/home.spec.ts +14 -0
- package/recipes/node-typescript-next-web/test/integration/health-route.test.ts +11 -0
- package/recipes/node-typescript-next-web/test/unit/health.test.ts +9 -0
- package/recipes/node-typescript-next-web/tsconfig.json +33 -0
- package/schemas/README.md +64 -0
- package/schemas/audit-report.schema.json +59 -0
- package/schemas/blueprint.schema.json +34 -0
- package/schemas/context-manifest.schema.json +88 -0
- package/schemas/delivery-record.schema.json +266 -0
- package/schemas/impact-manifest.schema.json +146 -0
- package/schemas/managed-repository.schema.json +36 -0
- package/schemas/mill-config.schema.json +212 -0
- package/schemas/mill-lock.schema.json +96 -0
- package/schemas/outcome-plan.schema.json +51 -0
- package/schemas/product-contract.schema.json +181 -0
- package/schemas/public-alpha-qualification.schema.json +391 -0
- package/schemas/recipe-manifest.schema.json +187 -0
- package/schemas/release-evidence.schema.json +170 -0
- package/schemas/repository-integration-plan.schema.json +156 -0
- package/schemas/review-result.schema.json +57 -0
- package/schemas/scenario-set.schema.json +84 -0
- package/schemas/source-manifest.schema.json +96 -0
- package/schemas/specification-proposal.schema.json +406 -0
- package/schemas/support-tuple.schema.json +107 -0
- package/schemas/task-packet.schema.json +395 -0
- package/schemas/validation-evidence.schema.json +125 -0
- package/schemas/worker-invocation.schema.json +119 -0
- package/schemas/worker-profile.schema.json +53 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { parse as parseYaml } from "yaml";
|
|
2
|
+
import { auditReportSchema, productContractSchema, recipeManifestSchema, scenarioSetSchema, } from "../contracts/schemas.js";
|
|
3
|
+
import { canonicalDigest } from "../contracts/canonical.js";
|
|
4
|
+
import { scanRepository } from "../repository/scan.js";
|
|
5
|
+
import { assertRepositoryWorktreeClean, readCandidateIdentity, } from "../runtime/repository.js";
|
|
6
|
+
import { safeReadText } from "../security/safe-path.js";
|
|
7
|
+
function record(value) {
|
|
8
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
9
|
+
throw new Error("expected an object");
|
|
10
|
+
}
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
async function structuredFile(root, file) {
|
|
14
|
+
const source = await safeReadText(root, file, 8 * 1024 * 1024);
|
|
15
|
+
return file.endsWith(".json") ? JSON.parse(source) : parseYaml(source);
|
|
16
|
+
}
|
|
17
|
+
async function runCheck(input) {
|
|
18
|
+
try {
|
|
19
|
+
await input.evaluate();
|
|
20
|
+
return {
|
|
21
|
+
id: input.id,
|
|
22
|
+
category: input.category,
|
|
23
|
+
status: "passed",
|
|
24
|
+
summary: input.summary,
|
|
25
|
+
evidence: input.evidence,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
return {
|
|
30
|
+
id: input.id,
|
|
31
|
+
category: input.category,
|
|
32
|
+
status: "blocked",
|
|
33
|
+
summary: `${input.summary}: ${error instanceof Error ? error.message : String(error)}`,
|
|
34
|
+
evidence: input.evidence,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function requireText(source, values) {
|
|
39
|
+
for (const value of values) {
|
|
40
|
+
if (!source.includes(value))
|
|
41
|
+
throw new Error(`missing ${value}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export async function auditRepository(input) {
|
|
45
|
+
const candidate = await readCandidateIdentity(input.root);
|
|
46
|
+
const [scan, productRaw, scenariosRaw, recipeRaw, packageRaw, lockRaw] = await Promise.all([
|
|
47
|
+
scanRepository(input.root),
|
|
48
|
+
structuredFile(input.root, "product/contract.yaml"),
|
|
49
|
+
structuredFile(input.root, "quality/scenarios.yaml"),
|
|
50
|
+
structuredFile(input.root, "recipes/node-typescript-next-web/recipe.yaml"),
|
|
51
|
+
structuredFile(input.root, "package.json"),
|
|
52
|
+
structuredFile(input.root, "package-lock.json"),
|
|
53
|
+
]);
|
|
54
|
+
const product = productContractSchema.parse(productRaw);
|
|
55
|
+
const scenarios = scenarioSetSchema.parse(scenariosRaw);
|
|
56
|
+
const recipe = recipeManifestSchema.parse(recipeRaw);
|
|
57
|
+
const packageJson = record(packageRaw);
|
|
58
|
+
const packageLock = record(lockRaw);
|
|
59
|
+
const [readme, agents, architecture, workflow, development, security, support, releaseGuide, releaseWorkflow,] = await Promise.all([
|
|
60
|
+
safeReadText(input.root, "README.md"),
|
|
61
|
+
safeReadText(input.root, "AGENTS.md"),
|
|
62
|
+
safeReadText(input.root, "architecture/ARCHITECTURE.md"),
|
|
63
|
+
safeReadText(input.root, "WORKFLOW.md"),
|
|
64
|
+
safeReadText(input.root, "docs/development.md"),
|
|
65
|
+
safeReadText(input.root, "SECURITY.md"),
|
|
66
|
+
safeReadText(input.root, "SUPPORT.md"),
|
|
67
|
+
safeReadText(input.root, "docs/release.md"),
|
|
68
|
+
safeReadText(input.root, ".github/workflows/release.yml"),
|
|
69
|
+
]);
|
|
70
|
+
const checks = await Promise.all([
|
|
71
|
+
runCheck({
|
|
72
|
+
id: "product.authority",
|
|
73
|
+
category: "product",
|
|
74
|
+
summary: "Product truth and continuity contracts are valid and linked",
|
|
75
|
+
evidence: [
|
|
76
|
+
"product/PRD.md",
|
|
77
|
+
"product/contract.yaml",
|
|
78
|
+
"quality/scenarios.yaml",
|
|
79
|
+
],
|
|
80
|
+
evaluate: () => {
|
|
81
|
+
if (product.outcomes.length === 0 || product.invariants.length === 0) {
|
|
82
|
+
throw new Error("product outcomes or invariants are empty");
|
|
83
|
+
}
|
|
84
|
+
if (scenarios.scenarios.length === 0)
|
|
85
|
+
throw new Error("scenario set is empty");
|
|
86
|
+
if (scenarios.productContractDigest !==
|
|
87
|
+
canonicalDigest(product)) {
|
|
88
|
+
throw new Error("scenario set is bound to another product contract");
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
}),
|
|
92
|
+
runCheck({
|
|
93
|
+
id: "code.exact-candidate",
|
|
94
|
+
category: "code",
|
|
95
|
+
summary: "The audit is bound to a clean exact Git candidate",
|
|
96
|
+
evidence: [candidate.commit, candidate.tree],
|
|
97
|
+
evaluate: () => assertRepositoryWorktreeClean(input.root),
|
|
98
|
+
}),
|
|
99
|
+
runCheck({
|
|
100
|
+
id: "ux.operator-path",
|
|
101
|
+
category: "ux",
|
|
102
|
+
summary: "The operator path is discoverable from the primary documentation",
|
|
103
|
+
evidence: ["README.md", "AGENTS.md"],
|
|
104
|
+
evaluate: () => {
|
|
105
|
+
requireText(readme, ["## Why Mill", "## Quick start", "millctl start"]);
|
|
106
|
+
requireText(agents, ["## Operating Mill", "## Authority hierarchy"]);
|
|
107
|
+
},
|
|
108
|
+
}),
|
|
109
|
+
runCheck({
|
|
110
|
+
id: "accessibility.delivered-surface",
|
|
111
|
+
category: "accessibility",
|
|
112
|
+
summary: "The recipe exposes browser and explicit accessibility validation hooks",
|
|
113
|
+
evidence: [
|
|
114
|
+
"recipes/node-typescript-next-web/recipe.yaml",
|
|
115
|
+
"docs/development.md",
|
|
116
|
+
],
|
|
117
|
+
evaluate: () => {
|
|
118
|
+
if (!recipe.commands.native.includes("test:browser")) {
|
|
119
|
+
throw new Error("recipe has no browser validation command");
|
|
120
|
+
}
|
|
121
|
+
requireText(development, ["Accessibility", "test:browser"]);
|
|
122
|
+
},
|
|
123
|
+
}),
|
|
124
|
+
runCheck({
|
|
125
|
+
id: "security.boundaries",
|
|
126
|
+
category: "security",
|
|
127
|
+
summary: "Security policy, static scan, and credential exclusions are intact",
|
|
128
|
+
evidence: ["SECURITY.md", scan.digest],
|
|
129
|
+
evaluate: () => {
|
|
130
|
+
if (scan.gitConfigHazards.length > 0 ||
|
|
131
|
+
scan.symlinksSkipped.length > 0 ||
|
|
132
|
+
scan.secretReferences.length > 0 ||
|
|
133
|
+
scan.truncatedDirectories.length > 0) {
|
|
134
|
+
throw new Error("repository scan has unresolved hazards");
|
|
135
|
+
}
|
|
136
|
+
requireText(security, [
|
|
137
|
+
"private vulnerability reporting",
|
|
138
|
+
"credentials",
|
|
139
|
+
]);
|
|
140
|
+
},
|
|
141
|
+
}),
|
|
142
|
+
runCheck({
|
|
143
|
+
id: "dependencies.exact-and-licensed",
|
|
144
|
+
category: "dependencies",
|
|
145
|
+
summary: "Runtime dependencies are exact and recipe licenses are reviewed",
|
|
146
|
+
evidence: [
|
|
147
|
+
"package.json",
|
|
148
|
+
"package-lock.json",
|
|
149
|
+
"recipes/node-typescript-next-web/recipe.yaml",
|
|
150
|
+
],
|
|
151
|
+
evaluate: () => {
|
|
152
|
+
const dependencies = record(packageJson.dependencies ?? {});
|
|
153
|
+
for (const [name, version] of Object.entries(dependencies)) {
|
|
154
|
+
if (typeof version !== "string" ||
|
|
155
|
+
!/^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[0-9A-Za-z.-]+)?$/u.test(version)) {
|
|
156
|
+
throw new Error(`dependency is not exactly pinned: ${name}`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (record(packageLock.packages ?? {})[""] === undefined) {
|
|
160
|
+
throw new Error("lockfile has no root package");
|
|
161
|
+
}
|
|
162
|
+
if (recipe.licensePolicy.reviewedPackages.length === 0) {
|
|
163
|
+
throw new Error("recipe dependency licenses are not reviewed");
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
}),
|
|
167
|
+
runCheck({
|
|
168
|
+
id: "architecture.bounded-monolith",
|
|
169
|
+
category: "architecture",
|
|
170
|
+
summary: "Architecture and workflow retain the bounded local-first design",
|
|
171
|
+
evidence: ["architecture/ARCHITECTURE.md", "WORKFLOW.md", "package.json"],
|
|
172
|
+
evaluate: () => {
|
|
173
|
+
requireText(architecture, [
|
|
174
|
+
"TypeScript modular monolith",
|
|
175
|
+
"there is no daemon",
|
|
176
|
+
]);
|
|
177
|
+
requireText(workflow, ["five vertical waves", "Factory skills"]);
|
|
178
|
+
const dependencies = Object.keys(record(packageJson.dependencies ?? {}));
|
|
179
|
+
if (dependencies.some((name) => /factoryd?|opencode|pi-agent/iu.test(name))) {
|
|
180
|
+
throw new Error("an excluded orchestrator or harness became a runtime dependency");
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
}),
|
|
184
|
+
runCheck({
|
|
185
|
+
id: "operations.recovery",
|
|
186
|
+
category: "operations",
|
|
187
|
+
summary: "Development, support, recovery, and agent operating paths are documented",
|
|
188
|
+
evidence: ["docs/development.md", "SUPPORT.md", "AGENTS.md"],
|
|
189
|
+
evaluate: () => {
|
|
190
|
+
requireText(development, [
|
|
191
|
+
"## Testing matrix",
|
|
192
|
+
"## Review convergence",
|
|
193
|
+
]);
|
|
194
|
+
requireText(support, ["GitHub Issues", "best-effort"]);
|
|
195
|
+
requireText(agents, ["## Recovery", "## Stop conditions"]);
|
|
196
|
+
},
|
|
197
|
+
}),
|
|
198
|
+
runCheck({
|
|
199
|
+
id: "release.exact-artifact",
|
|
200
|
+
category: "release",
|
|
201
|
+
summary: "Release policy publishes one preserved qualified public artifact",
|
|
202
|
+
evidence: [
|
|
203
|
+
"package.json",
|
|
204
|
+
".github/workflows/release.yml",
|
|
205
|
+
"docs/release.md",
|
|
206
|
+
],
|
|
207
|
+
evaluate: () => {
|
|
208
|
+
if (packageJson.name !== "@davidahmann/mill" ||
|
|
209
|
+
packageJson.version === "0.0.0-development" ||
|
|
210
|
+
record(packageJson.publishConfig ?? {}).access !== "public" ||
|
|
211
|
+
record(packageJson.publishConfig ?? {}).provenance !== true) {
|
|
212
|
+
throw new Error("package release identity is not public-alpha ready");
|
|
213
|
+
}
|
|
214
|
+
requireText(releaseWorkflow, [
|
|
215
|
+
"compare-release-artifacts.mjs",
|
|
216
|
+
'npm publish "$artifact"',
|
|
217
|
+
]);
|
|
218
|
+
requireText(releaseGuide, ["Genesis release", "Withdrawal"]);
|
|
219
|
+
},
|
|
220
|
+
}),
|
|
221
|
+
]);
|
|
222
|
+
return auditReportSchema.parse({
|
|
223
|
+
schemaVersion: "1",
|
|
224
|
+
candidate,
|
|
225
|
+
generatedAt: (input.now ?? new Date()).toISOString(),
|
|
226
|
+
status: checks.every((check) => check.status === "passed")
|
|
227
|
+
? "passed"
|
|
228
|
+
: "blocked",
|
|
229
|
+
checks,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/audit/repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
export interface CliIo {
|
|
3
|
+
stdout: {
|
|
4
|
+
write(value: string): unknown;
|
|
5
|
+
};
|
|
6
|
+
stderr: {
|
|
7
|
+
write(value: string): unknown;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export declare function createProgram(io: CliIo, jsonErrors?: boolean): Command;
|
|
11
|
+
export declare function runCli(argv: readonly string[], io: CliIo): Promise<number>;
|
|
12
|
+
//# sourceMappingURL=cli-program.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-program.d.ts","sourceRoot":"","sources":["../src/cli-program.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAwC,MAAM,WAAW,CAAC;AA2D1E,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE;QAAE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAC1C,MAAM,EAAE;QAAE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CAC3C;AA+ED,wBAAgB,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,UAAQ,GAAG,OAAO,CA0wCpE;AAED,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,EAAE,KAAK,GACR,OAAO,CAAC,MAAM,CAAC,CAuFjB"}
|