mimetic-cli 0.1.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.
Files changed (44) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +132 -0
  3. package/dist/argv.d.ts +1 -0
  4. package/dist/argv.js +8 -0
  5. package/dist/argv.js.map +1 -0
  6. package/dist/cli.d.ts +2 -0
  7. package/dist/cli.js +5 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/feedback.d.ts +48 -0
  10. package/dist/feedback.js +243 -0
  11. package/dist/feedback.js.map +1 -0
  12. package/dist/index.d.ts +15 -0
  13. package/dist/index.js +9 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/init-templates.d.ts +12 -0
  16. package/dist/init-templates.js +251 -0
  17. package/dist/init-templates.js.map +1 -0
  18. package/dist/init.d.ts +26 -0
  19. package/dist/init.js +343 -0
  20. package/dist/init.js.map +1 -0
  21. package/dist/observer-assets.d.ts +2 -0
  22. package/dist/observer-assets.js +2322 -0
  23. package/dist/observer-assets.js.map +1 -0
  24. package/dist/observer-data.d.ts +53 -0
  25. package/dist/observer-data.js +123 -0
  26. package/dist/observer-data.js.map +1 -0
  27. package/dist/observer.d.ts +36 -0
  28. package/dist/observer.js +360 -0
  29. package/dist/observer.js.map +1 -0
  30. package/dist/oss-lab.d.ts +50 -0
  31. package/dist/oss-lab.js +298 -0
  32. package/dist/oss-lab.js.map +1 -0
  33. package/dist/oss-meta-lab.d.ts +43 -0
  34. package/dist/oss-meta-lab.js +901 -0
  35. package/dist/oss-meta-lab.js.map +1 -0
  36. package/dist/program.d.ts +36 -0
  37. package/dist/program.js +825 -0
  38. package/dist/program.js.map +1 -0
  39. package/dist/run.d.ts +206 -0
  40. package/dist/run.js +688 -0
  41. package/dist/run.js.map +1 -0
  42. package/package.json +78 -0
  43. package/skills/mimetic-cli/SKILL.md +92 -0
  44. package/skills/mimetic-cli/agents/openai.yaml +7 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mimetic CLI contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,132 @@
1
+ # mimetic-cli
2
+
3
+ Open-source-safe persona simulation for apps, CLIs, and agent-facing product
4
+ flows.
5
+
6
+ Mimetic gives a project a repeatable way to ask: what happens when realistic
7
+ synthetic users, with different goals and tolerances, try to use this thing?
8
+ It creates committed simulation source under `mimetic/`, ignored run evidence
9
+ under `.mimetic/`, a watchable Observer UI, verification gates, and public-safe
10
+ feedback drafts.
11
+
12
+ ## Install
13
+
14
+ ```bash
15
+ npm i -D mimetic-cli
16
+ npx mimetic init --yes
17
+ npx mimetic watch
18
+ ```
19
+
20
+ For coding agents, install the repo skill first:
21
+
22
+ ```bash
23
+ npx skills add danielgwilson/mimetic-cli --skill mimetic-cli
24
+ ```
25
+
26
+ The skill lives at [`skills/mimetic-cli/SKILL.md`](skills/mimetic-cli/SKILL.md)
27
+ for skills.sh discovery.
28
+
29
+ ## Public-Safety Boundary
30
+
31
+ Mimetic is designed for public repositories and public issue queues.
32
+
33
+ Do not commit, emit, paste, preserve, or generate PII, PHI, secrets, keys,
34
+ tokens, raw private transcripts, private screenshots, private customer data,
35
+ private patient data, or private source snippets.
36
+
37
+ Use synthetic personas, synthetic examples, redacted evidence pointers, and
38
+ env var names without values. Generated run bundles belong under ignored
39
+ `.mimetic/`.
40
+
41
+ ## How It Works
42
+
43
+ ```text
44
+ mimetic/ committed source plane: personas, scenarios, policy, adapters
45
+ .mimetic/ ignored runtime plane: runs, Observer output, reviews, local state
46
+ ```
47
+
48
+ The first-run path does not require credentials:
49
+
50
+ ```bash
51
+ npx mimetic doctor
52
+ npx mimetic watch
53
+ npx mimetic verify --run latest --json
54
+ npx mimetic feedback issue --run latest --repo owner/repo --format markdown
55
+ ```
56
+
57
+ `mimetic watch` starts a fresh four-lane synthetic run, renders the Observer,
58
+ opens it in the browser, serves it over localhost, and keeps the shell attached.
59
+ The CI-safe equivalent is:
60
+
61
+ ```bash
62
+ npx mimetic watch --json --no-open
63
+ ```
64
+
65
+ ## Commands
66
+
67
+ | Command | Purpose |
68
+ | --- | --- |
69
+ | `mimetic init` | Scaffold committed `mimetic/` source and ignored `.mimetic/` runtime state. |
70
+ | `mimetic doctor` | Explain readiness and missing setup. |
71
+ | `mimetic run --dry-run` | Generate a synthetic run bundle without browser, keys, or provider spend. |
72
+ | `mimetic watch` | Run sims, open Observer, and keep watching. |
73
+ | `mimetic verify` | Validate a run bundle and public-safety gates. |
74
+ | `mimetic review` | Read review evidence for a run. |
75
+ | `mimetic runs` | List local runs and latest pointers. |
76
+ | `mimetic feedback issue` | Print a public-safe GitHub issue draft without API mutation. |
77
+ | `mimetic lab oss` | Experimental Observer-of-Observers for headed public-OSS setup attempts. |
78
+ | `mimetic lab oss-smoke` | Disposable clone smoke test against public OSS repos. |
79
+
80
+ ## OSS Lab
81
+
82
+ The experimental public-OSS dogfood loop is:
83
+
84
+ ```bash
85
+ pnpm mimetic -- lab oss
86
+ pnpm mimetic -- lab oss --repos developit/mitt,lukeed/clsx,sindresorhus/is-plain-obj,ai/nanoid
87
+ ```
88
+
89
+ With `E2B_API_KEY` and `OPENAI_API_KEY` present, Mimetic launches headed E2B
90
+ desktop lanes, uploads the local package tarball, clones each assigned public
91
+ repository inside the sandbox, initializes Mimetic, runs nested proof commands,
92
+ attempts a Codex TUI pass, and opens the nested Observer in the sandbox browser.
93
+
94
+ The contract-safe path for agents and CI is:
95
+
96
+ ```bash
97
+ pnpm mimetic -- lab oss --dry-run --json --no-open
98
+ ```
99
+
100
+ ## Development
101
+
102
+ ```bash
103
+ pnpm install
104
+ pnpm check
105
+ pnpm public-surface:scan
106
+ pnpm pack:dry-run
107
+ ```
108
+
109
+ Local dogfood:
110
+
111
+ ```bash
112
+ pnpm mimetic:watch
113
+ pnpm mimetic:verify
114
+ pnpm mimetic:feedback
115
+ ```
116
+
117
+ ## Docs
118
+
119
+ - [Project layout](docs/architecture/project-layout.md)
120
+ - [Observer architecture](docs/architecture/observer.md)
121
+ - [OSS lab POC](docs/architecture/oss-lab-poc.md)
122
+ - [Feedback contract](docs/contracts/feedback.md)
123
+ - [Open-source install experience](docs/product/open-source-install-experience.md)
124
+ - [Self-driving harness principles](docs/principles/self-driving-harness.md)
125
+ - [World-class open-source v0 roadmap](docs/roadmap/world-class-open-source-v0.md)
126
+ - [Open-source release readiness](docs/release/open-source-readiness.md)
127
+
128
+ ## Release Status
129
+
130
+ This package is prepared for public npm packaging, but publication is still a
131
+ human release action. Do not run `npm publish` unless the maintainer explicitly
132
+ approves it in the current context.
package/dist/argv.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare function normalizeCliArgv(argv: string[]): string[];
package/dist/argv.js ADDED
@@ -0,0 +1,8 @@
1
+ export function normalizeCliArgv(argv) {
2
+ const [runtime, entrypoint, separator, ...rest] = argv;
3
+ if (runtime && entrypoint && separator === "--") {
4
+ return [runtime, entrypoint, ...rest];
5
+ }
6
+ return argv;
7
+ }
8
+ //# sourceMappingURL=argv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"argv.js","sourceRoot":"","sources":["../src/argv.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,IAAc;IAC7C,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAEvD,IAAI,OAAO,IAAI,UAAU,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/cli.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+ import { normalizeCliArgv } from "./argv.js";
3
+ import { createProgram } from "./program.js";
4
+ await createProgram().parseAsync(normalizeCliArgv(process.argv));
5
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,aAAa,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC"}
@@ -0,0 +1,48 @@
1
+ export declare const FEEDBACK_SCHEMA = "mimetic.feedback.v1";
2
+ export declare const FEEDBACK_RESULT_SCHEMA = "mimetic.feedback-result.v1";
3
+ export interface FeedbackDraft {
4
+ schema: typeof FEEDBACK_SCHEMA;
5
+ run_id: string;
6
+ adapter_id: string;
7
+ scenario_id: string;
8
+ persona_id: string;
9
+ actor: "synthetic-dry-run";
10
+ substrate: "local-filesystem";
11
+ failure_owner: "harness";
12
+ summary: string;
13
+ expected: string;
14
+ actual: string;
15
+ source_bundle: string;
16
+ evidence: Array<{
17
+ path: string;
18
+ kind: "review" | "state";
19
+ note: string;
20
+ }>;
21
+ redaction: {
22
+ status: "passed";
23
+ notes: string;
24
+ };
25
+ idempotency_key: string;
26
+ proposed_next_state: "watch";
27
+ acceptance_proof: string[];
28
+ }
29
+ export interface FeedbackResult {
30
+ schema: typeof FEEDBACK_RESULT_SCHEMA;
31
+ ok: boolean;
32
+ cwd: string;
33
+ run: string;
34
+ draftPath?: string;
35
+ issuePath?: string;
36
+ issueMarkdown?: string;
37
+ issueUrl?: string;
38
+ draft?: FeedbackDraft;
39
+ error?: {
40
+ code: "MIMETIC_RUN_NOT_FOUND" | "MIMETIC_INVALID_RUN_BUNDLE" | "MIMETIC_INVALID_FEEDBACK_DRAFT";
41
+ message: string;
42
+ };
43
+ }
44
+ export declare function draftFeedback(cwdInput: string, runInput: string): Promise<FeedbackResult>;
45
+ export declare function verifyFeedback(cwdInput: string, runInput: string): Promise<FeedbackResult>;
46
+ export declare function renderIssueMarkdown(cwdInput: string, runInput: string, repo: string): Promise<FeedbackResult>;
47
+ export declare function renderIssueUrl(cwdInput: string, runInput: string, repo: string): Promise<FeedbackResult>;
48
+ export declare function listFeedback(cwdInput: string, runInput: string): Promise<FeedbackResult>;
@@ -0,0 +1,243 @@
1
+ import { mkdir, readFile, stat, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { loadRunBundle, verifyRun } from "./run.js";
4
+ export const FEEDBACK_SCHEMA = "mimetic.feedback.v1";
5
+ export const FEEDBACK_RESULT_SCHEMA = "mimetic.feedback-result.v1";
6
+ export async function draftFeedback(cwdInput, runInput) {
7
+ const cwd = path.resolve(cwdInput);
8
+ const loaded = await loadRunBundle(cwd, runInput);
9
+ if (!loaded) {
10
+ return {
11
+ schema: FEEDBACK_RESULT_SCHEMA,
12
+ ok: false,
13
+ cwd,
14
+ run: runInput,
15
+ error: {
16
+ code: "MIMETIC_RUN_NOT_FOUND",
17
+ message: `Run not found: ${runInput}`
18
+ }
19
+ };
20
+ }
21
+ const verified = await verifyRun(cwd, runInput);
22
+ if (!verified.ok) {
23
+ return {
24
+ schema: FEEDBACK_RESULT_SCHEMA,
25
+ ok: false,
26
+ cwd,
27
+ run: runInput,
28
+ error: {
29
+ code: "MIMETIC_INVALID_RUN_BUNDLE",
30
+ message: verified.error?.message ?? "Run bundle failed verification."
31
+ }
32
+ };
33
+ }
34
+ const draft = buildDraft(loaded.bundle, loaded.bundlePath);
35
+ const feedbackDir = path.join(loaded.runDir, "feedback");
36
+ const draftPath = path.join(feedbackDir, "draft.json");
37
+ await mkdir(feedbackDir, { recursive: true });
38
+ await writeJson(draftPath, draft);
39
+ return {
40
+ schema: FEEDBACK_RESULT_SCHEMA,
41
+ ok: true,
42
+ cwd,
43
+ run: runInput,
44
+ draftPath: path.relative(cwd, draftPath),
45
+ draft
46
+ };
47
+ }
48
+ export async function verifyFeedback(cwdInput, runInput) {
49
+ const drafted = await draftFeedback(cwdInput, runInput);
50
+ if (!drafted.ok || !drafted.draft) {
51
+ return drafted;
52
+ }
53
+ const missingEvidence = [];
54
+ for (const evidence of drafted.draft.evidence) {
55
+ if (!await fileExists(path.join(drafted.cwd, evidence.path))) {
56
+ missingEvidence.push(evidence.path);
57
+ }
58
+ }
59
+ if (missingEvidence.length > 0) {
60
+ return {
61
+ ...drafted,
62
+ ok: false,
63
+ error: {
64
+ code: "MIMETIC_INVALID_FEEDBACK_DRAFT",
65
+ message: `Feedback evidence missing: ${missingEvidence.join(", ")}`
66
+ }
67
+ };
68
+ }
69
+ return drafted;
70
+ }
71
+ export async function renderIssueMarkdown(cwdInput, runInput, repo) {
72
+ const verified = await verifyFeedback(cwdInput, runInput);
73
+ if (!verified.ok || !verified.draft || !verified.draftPath) {
74
+ return verified;
75
+ }
76
+ const loaded = await loadRunBundle(verified.cwd, runInput);
77
+ if (!loaded) {
78
+ return verified;
79
+ }
80
+ const issueMarkdown = renderMarkdown(verified.draft, repo);
81
+ const issuePath = path.join(loaded.runDir, "feedback", "issue.md");
82
+ await writeFile(issuePath, issueMarkdown, "utf8");
83
+ return {
84
+ ...verified,
85
+ issuePath: path.relative(verified.cwd, issuePath),
86
+ issueMarkdown
87
+ };
88
+ }
89
+ export async function renderIssueUrl(cwdInput, runInput, repo) {
90
+ const rendered = await renderIssueMarkdown(cwdInput, runInput, repo);
91
+ if (!rendered.ok || !rendered.issueMarkdown || !rendered.draft) {
92
+ return rendered;
93
+ }
94
+ const title = `[Mimetic] ${rendered.draft.summary}`;
95
+ return {
96
+ ...rendered,
97
+ issueUrl: `https://github.com/${encodeGitHubRepoPath(repo)}/issues/new?title=${encodeURIComponent(title)}&body=${encodeURIComponent(rendered.issueMarkdown)}`
98
+ };
99
+ }
100
+ export async function listFeedback(cwdInput, runInput) {
101
+ const cwd = path.resolve(cwdInput);
102
+ const loaded = await loadRunBundle(cwd, runInput);
103
+ if (!loaded) {
104
+ return {
105
+ schema: FEEDBACK_RESULT_SCHEMA,
106
+ ok: false,
107
+ cwd,
108
+ run: runInput,
109
+ error: {
110
+ code: "MIMETIC_RUN_NOT_FOUND",
111
+ message: `Run not found: ${runInput}`
112
+ }
113
+ };
114
+ }
115
+ const draftPath = path.join(loaded.runDir, "feedback", "draft.json");
116
+ const draftText = await readTextIfExists(draftPath);
117
+ const draft = draftText === null ? undefined : JSON.parse(draftText);
118
+ return {
119
+ schema: FEEDBACK_RESULT_SCHEMA,
120
+ ok: true,
121
+ cwd,
122
+ run: runInput,
123
+ ...(draft ? { draftPath: path.relative(cwd, draftPath), draft } : {})
124
+ };
125
+ }
126
+ function buildDraft(bundle, bundlePath) {
127
+ return {
128
+ schema: FEEDBACK_SCHEMA,
129
+ run_id: bundle.runId,
130
+ adapter_id: bundle.source.packageName ?? "synthetic-app",
131
+ scenario_id: bundle.scenario.id,
132
+ persona_id: bundle.persona.id,
133
+ actor: "synthetic-dry-run",
134
+ substrate: "local-filesystem",
135
+ failure_owner: "harness",
136
+ summary: "Dry-run contract proof needs product-evidence follow-up",
137
+ expected: "Mimetic should produce verified, public-safe evidence before product claims are filed.",
138
+ actual: "This dry-run produced a contract-proof bundle only; no browser or product behavior was exercised.",
139
+ source_bundle: bundlePath,
140
+ evidence: [
141
+ {
142
+ path: bundlePath,
143
+ kind: "state",
144
+ note: "Synthetic run bundle."
145
+ },
146
+ {
147
+ path: path.join(path.dirname(bundlePath), "review.md"),
148
+ kind: "review",
149
+ note: "Review skeleton labels this as contract proof only."
150
+ }
151
+ ],
152
+ redaction: {
153
+ status: "passed",
154
+ notes: bundle.redaction.notes
155
+ },
156
+ idempotency_key: `mimetic:${bundle.runId}:dry-run-contract-proof`,
157
+ proposed_next_state: "watch",
158
+ acceptance_proof: [
159
+ `pnpm mimetic -- verify --run ${bundle.runId} --json`,
160
+ `pnpm mimetic -- watch --run ${bundle.runId} --no-open`
161
+ ]
162
+ };
163
+ }
164
+ function renderMarkdown(draft, repo) {
165
+ return `This issue was drafted by Mimetic from a verified dry-run bundle.
166
+
167
+ It contributes to public-safe simulation harness coverage. It does not claim product behavior proof.
168
+
169
+ ## Summary
170
+
171
+ ${draft.summary}
172
+
173
+ ## Expected
174
+
175
+ ${draft.expected}
176
+
177
+ ## Actual
178
+
179
+ ${draft.actual}
180
+
181
+ ## Evidence
182
+
183
+ ${draft.evidence.map((item) => `- ${item.kind}: \`${item.path}\` - ${item.note}`).join("\n")}
184
+
185
+ ## Filing Notes
186
+
187
+ - Repository: ${repo}
188
+ - GitHub mutation: not performed
189
+ - Provider spend: not used
190
+ - Production data: not used
191
+
192
+ \`\`\`yaml
193
+ mimetic_feedback:
194
+ schema: ${draft.schema}
195
+ run_id: ${draft.run_id}
196
+ adapter_id: ${draft.adapter_id}
197
+ scenario_id: ${draft.scenario_id}
198
+ persona_id: ${draft.persona_id}
199
+ actor: ${draft.actor}
200
+ substrate: ${draft.substrate}
201
+ failure_owner: ${draft.failure_owner}
202
+ source_bundle: ${draft.source_bundle}
203
+ evidence:
204
+ ${draft.evidence.map((item) => ` - path: ${item.path}\n kind: ${item.kind}\n note: ${item.note}`).join("\n")}
205
+ redaction:
206
+ status: ${draft.redaction.status}
207
+ notes: ${draft.redaction.notes}
208
+ idempotency_key: ${draft.idempotency_key}
209
+ proposed_next_state: ${draft.proposed_next_state}
210
+ acceptance_proof:
211
+ ${draft.acceptance_proof.map((proof) => ` - ${proof}`).join("\n")}
212
+ \`\`\`
213
+ `;
214
+ }
215
+ function encodeGitHubRepoPath(repo) {
216
+ return repo.split("/").map((part) => encodeURIComponent(part)).join("/");
217
+ }
218
+ async function writeJson(filePath, value) {
219
+ await writeFile(filePath, `${JSON.stringify(value, null, 2)}\n`, "utf8");
220
+ }
221
+ async function readTextIfExists(filePath) {
222
+ try {
223
+ return await readFile(filePath, "utf8");
224
+ }
225
+ catch (error) {
226
+ if (error instanceof Error && "code" in error && error.code === "ENOENT") {
227
+ return null;
228
+ }
229
+ throw error;
230
+ }
231
+ }
232
+ async function fileExists(filePath) {
233
+ try {
234
+ return (await stat(filePath)).isFile();
235
+ }
236
+ catch (error) {
237
+ if (error instanceof Error && "code" in error && error.code === "ENOENT") {
238
+ return false;
239
+ }
240
+ throw error;
241
+ }
242
+ }
243
+ //# sourceMappingURL=feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../src/feedback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export { normalizeCliArgv } from "./argv.js";
2
+ export { FEEDBACK_RESULT_SCHEMA, FEEDBACK_SCHEMA, draftFeedback, listFeedback, renderIssueMarkdown, renderIssueUrl, verifyFeedback } from "./feedback.js";
3
+ export type { FeedbackDraft, FeedbackResult } from "./feedback.js";
4
+ export { INIT_RESPONSE_SCHEMA, runInit } from "./init.js";
5
+ export type { InitChange, InitMode, InitOptions, InitResult } from "./init.js";
6
+ export { OBSERVER_DATA_SCHEMA, buildObserverData, stripAnsi } from "./observer-data.js";
7
+ export type { ObserverData, ObserverStream } from "./observer-data.js";
8
+ export { OBSERVER_SCHEMA, renderObserver, serveObserver } from "./observer.js";
9
+ export type { ObserverOptions, ObserverResult, ObserverServeOptions, ObserverServer } from "./observer.js";
10
+ export { DEFAULT_OSS_REPOS, OSS_LAB_SCHEMA, normalizeOssRepoSlugs, runOssLab, validateOssRepoSlug } from "./oss-lab.js";
11
+ export type { OssLabOptions, OssLabRepoResult, OssLabResult, OssLabStep } from "./oss-lab.js";
12
+ export { DOCTOR_SCHEMA, REVIEW_SCHEMA, RUNS_SCHEMA, RUN_BUNDLE_SCHEMA, VERIFY_SCHEMA, doctor, listRuns, readReview, runDryRun, verifyRun } from "./run.js";
13
+ export type { DoctorResult, ReviewSummary, RunBundle, RunEvent, RunOptions, RunResult, RunSimulation, RunStream, RunStreamKind, RunsResult, VerifyResult } from "./run.js";
14
+ export { CLI_RESPONSE_SCHEMA, createProgram, plannedCommands } from "./program.js";
15
+ export type { CliIo, PlannedCommand, UnsupportedEnvelope } from "./program.js";
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ export { normalizeCliArgv } from "./argv.js";
2
+ export { FEEDBACK_RESULT_SCHEMA, FEEDBACK_SCHEMA, draftFeedback, listFeedback, renderIssueMarkdown, renderIssueUrl, verifyFeedback } from "./feedback.js";
3
+ export { INIT_RESPONSE_SCHEMA, runInit } from "./init.js";
4
+ export { OBSERVER_DATA_SCHEMA, buildObserverData, stripAnsi } from "./observer-data.js";
5
+ export { OBSERVER_SCHEMA, renderObserver, serveObserver } from "./observer.js";
6
+ export { DEFAULT_OSS_REPOS, OSS_LAB_SCHEMA, normalizeOssRepoSlugs, runOssLab, validateOssRepoSlug } from "./oss-lab.js";
7
+ export { DOCTOR_SCHEMA, REVIEW_SCHEMA, RUNS_SCHEMA, RUN_BUNDLE_SCHEMA, VERIFY_SCHEMA, doctor, listRuns, readReview, runDryRun, verifyRun } from "./run.js";
8
+ export { CLI_RESPONSE_SCHEMA, createProgram, plannedCommands } from "./program.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,cAAc,EACf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAExF,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE/E,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,mBAAmB,EACpB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,aAAa,EACb,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,MAAM,EACN,QAAQ,EACR,UAAU,EACV,SAAS,EACT,SAAS,EACV,MAAM,UAAU,CAAC;AAclB,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,eAAe,EAChB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface StarterFile {
2
+ path: string;
3
+ contents: string;
4
+ plane: "source";
5
+ }
6
+ export interface RuntimeDirectory {
7
+ path: string;
8
+ plane: "runtime";
9
+ }
10
+ export declare const starterFiles: StarterFile[];
11
+ export declare const runtimeDirectories: RuntimeDirectory[];
12
+ export declare const mimeticScripts: Record<string, string>;