mimetic-cli 0.1.3 → 0.1.5

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 (50) hide show
  1. package/README.md +67 -12
  2. package/dist/env-file.d.ts +14 -0
  3. package/dist/env-file.js +108 -0
  4. package/dist/env-file.js.map +1 -0
  5. package/dist/feedback.d.ts +7 -5
  6. package/dist/feedback.js +61 -4
  7. package/dist/feedback.js.map +1 -1
  8. package/dist/init-templates.js +29 -0
  9. package/dist/init-templates.js.map +1 -1
  10. package/dist/lab-app-runner.d.ts +78 -0
  11. package/dist/lab-app-runner.js +403 -0
  12. package/dist/lab-app-runner.js.map +1 -0
  13. package/dist/labs.d.ts +67 -0
  14. package/dist/labs.js +257 -0
  15. package/dist/labs.js.map +1 -0
  16. package/dist/observer-assets.js +473 -25
  17. package/dist/observer-assets.js.map +1 -1
  18. package/dist/observer.d.ts +6 -0
  19. package/dist/observer.js +49 -8
  20. package/dist/observer.js.map +1 -1
  21. package/dist/oss-lab.d.ts +1 -1
  22. package/dist/oss-lab.js +6 -6
  23. package/dist/oss-lab.js.map +1 -1
  24. package/dist/oss-meta-lab.d.ts +113 -1
  25. package/dist/oss-meta-lab.js +2753 -200
  26. package/dist/oss-meta-lab.js.map +1 -1
  27. package/dist/oss-remote-telemetry.d.ts +77 -0
  28. package/dist/oss-remote-telemetry.js +393 -0
  29. package/dist/oss-remote-telemetry.js.map +1 -0
  30. package/dist/program.d.ts +8 -0
  31. package/dist/program.js +668 -70
  32. package/dist/program.js.map +1 -1
  33. package/dist/run.d.ts +105 -3
  34. package/dist/run.js +684 -22
  35. package/dist/run.js.map +1 -1
  36. package/docs/architecture/local-codex-tui-actor.md +9 -6
  37. package/docs/architecture/oss-lab-poc.md +119 -47
  38. package/docs/architecture/project-layout.md +40 -6
  39. package/docs/assets/mimetic-oss-lab-observer.png +0 -0
  40. package/docs/contracts/feedback.md +15 -12
  41. package/docs/contracts/policy.md +9 -2
  42. package/docs/contracts/run-bundle.md +62 -0
  43. package/docs/contracts/schemas.md +21 -0
  44. package/docs/goals/current.md +50 -17
  45. package/docs/product/open-source-install-experience.md +63 -8
  46. package/docs/ramp/README.md +26 -8
  47. package/docs/roadmap/world-class-open-source-v0.md +41 -20
  48. package/package.json +9 -6
  49. package/skills/mimetic-cli/SKILL.md +89 -4
  50. package/skills/mimetic-cli/agents/openai.yaml +1 -1
package/README.md CHANGED
@@ -9,7 +9,7 @@ It creates committed simulation source under `mimetic/`, ignored run evidence
9
9
  under `.mimetic/`, a watchable Observer UI, verification gates, and public-safe
10
10
  feedback drafts.
11
11
 
12
- ![Mimetic OSS Lab Observer showing four headed E2B desktops, each with a nested Mimetic Observer open](https://unpkg.com/mimetic-cli@latest/docs/assets/mimetic-oss-lab-observer.png)
12
+ ![Mimetic Observer mission control showing synthetic lanes, filesystem evidence, terminal status, nested app proof, and public-safe review state](https://unpkg.com/mimetic-cli@latest/docs/assets/mimetic-oss-lab-observer.png?v=0.1.5)
13
13
 
14
14
  ## Install
15
15
 
@@ -19,6 +19,10 @@ npx mimetic init --yes
19
19
  npx mimetic watch
20
20
  ```
21
21
 
22
+ The package is `mimetic-cli`; the installed binary is `mimetic`. For a one-shot
23
+ command before installation, use `npx --package mimetic-cli mimetic ...` so npm
24
+ does not resolve an unrelated package named `mimetic`.
25
+
22
26
  For coding agents, install the repo skill first:
23
27
 
24
28
  ```bash
@@ -43,7 +47,7 @@ env var names without values. Generated run bundles belong under ignored
43
47
  ## How It Works
44
48
 
45
49
  ```text
46
- mimetic/ committed source plane: personas, scenarios, policy, adapters
50
+ mimetic/ committed source plane: labs, personas, scenarios, policy, adapters
47
51
  .mimetic/ ignored runtime plane: runs, Observer output, reviews, local state
48
52
  ```
49
53
 
@@ -58,6 +62,14 @@ npx mimetic feedback issue --run latest --repo owner/repo --format markdown
58
62
 
59
63
  `mimetic watch` starts a fresh four-lane synthetic run, renders the Observer,
60
64
  opens it in the browser, serves it over localhost, and keeps the shell attached.
65
+ After `mimetic init`, named lab manifests can be run the same way:
66
+
67
+ ```bash
68
+ npx mimetic watch first-run
69
+ npx mimetic lab list
70
+ npx mimetic lab inspect first-run
71
+ ```
72
+
61
73
  The CI-safe equivalent is:
62
74
 
63
75
  ```bash
@@ -71,27 +83,60 @@ npx mimetic watch --json --no-open
71
83
  | `mimetic init` | Scaffold committed `mimetic/` source and ignored `.mimetic/` runtime state. |
72
84
  | `mimetic doctor` | Explain readiness and missing setup. |
73
85
  | `mimetic run --dry-run` | Generate a synthetic run bundle without browser, keys, or provider spend. |
74
- | `mimetic watch` | Run sims, open Observer, and keep watching. |
86
+ | `mimetic run --app-url http://127.0.0.1:<port>` | Capture live desktop/mobile browser evidence against a running local app. |
87
+ | `mimetic watch [lab]` | Run sims or a named lab, open Observer, and keep watching. |
88
+ | `mimetic lab list` | List committed and ignored lab manifests. |
89
+ | `mimetic lab inspect <lab>` | Show the source manifest for a lab without running it. |
90
+ | `mimetic lab run <lab>` | Run a lab manifest in human or JSON mode. |
75
91
  | `mimetic verify` | Validate a run bundle and public-safety gates. |
76
92
  | `mimetic review` | Read review evidence for a run. |
77
93
  | `mimetic runs` | List local runs and latest pointers. |
78
94
  | `mimetic feedback issue` | Print a public-safe GitHub issue draft without API mutation. |
79
- | `mimetic lab oss` | Experimental Observer-of-Observers for headed public-OSS setup attempts. |
80
- | `mimetic lab oss-smoke` | Disposable clone smoke test against public OSS repos. |
95
+ | `mimetic lab run oss` | Repo-maintainer dogfood example: Observer-of-Observers for headed authorized-repo app setup attempts. |
96
+ | `mimetic lab run oss-smoke` | Repo-maintainer dogfood example: disposable clone smoke test against public OSS repos. |
81
97
 
82
- ## OSS Lab
98
+ ## Lab Manifests
99
+
100
+ Labs are authored as `.yaml` source:
101
+
102
+ ```text
103
+ mimetic/labs/*.yaml committed public-safe labs
104
+ .mimetic/labs/*.yaml ignored local labs
105
+ .mimetic/local/labs/*.yaml ignored private or machine-specific labs
106
+ ```
83
107
 
84
- The experimental public-OSS dogfood loop is:
108
+ Committed labs should be useful to anyone who clones the project. Private repo
109
+ targets, token-backed provider settings, and local-only dogfood variants belong
110
+ in ignored `.mimetic/` lab manifests and can be run explicitly:
85
111
 
86
112
  ```bash
87
- pnpm mimetic -- lab oss
88
- pnpm mimetic -- lab oss --repos developit/mitt,lukeed/clsx,sindresorhus/is-plain-obj,ai/nanoid
113
+ npx mimetic watch .mimetic/labs/local-dogfood.yaml --env-file .mimetic/local/provider.env
114
+ npx mimetic lab run .mimetic/labs/local-dogfood.yaml --json --no-open
89
115
  ```
90
116
 
117
+ `--env-file` loads values for the current process only. Mimetic reports loaded
118
+ env var names, never values, and does not persist those values into run bundles
119
+ or Observer data.
120
+
121
+ ## Maintainer OSS Meta-Lab Example
122
+
123
+ This repository includes an experimental authorized-repo dogfood lab:
124
+
125
+ ```bash
126
+ pnpm mimetic -- watch oss
127
+ pnpm mimetic -- lab run oss --repos CorentinTh/it-tools,drawdb-io/drawdb,maciekt07/TodoApp,lissy93/dashy
128
+ ```
129
+
130
+ Default lab targets are intentionally app/tool-like repos with visible,
131
+ locally runnable user surfaces. Avoid libraries and frameworks for public
132
+ dogfood unless the scenario is explicitly testing developer experience.
133
+
91
134
  With `E2B_API_KEY` and `OPENAI_API_KEY` present, Mimetic launches headed E2B
92
- desktop lanes, uploads the local package tarball, clones each assigned public
135
+ desktop lanes, uploads the local package tarball, clones each assigned
93
136
  repository inside the sandbox, initializes Mimetic, runs nested proof commands,
94
- attempts a Codex TUI pass, and opens the nested Observer in the sandbox browser.
137
+ starts the target app when a runnable script is present, opens desktop/mobile
138
+ app windows plus the nested Observer in the sandbox browser, and starts a
139
+ nonblocking Codex actor attempt.
95
140
  Install the optional desktop substrate first:
96
141
 
97
142
  ```bash
@@ -101,9 +146,18 @@ npm i -D @e2b/desktop
101
146
  The contract-safe path for agents and CI is:
102
147
 
103
148
  ```bash
104
- pnpm mimetic -- lab oss --dry-run --json --no-open
149
+ pnpm mimetic -- lab run oss --dry-run --json --no-open
105
150
  ```
106
151
 
152
+ The `oss` lab accepts GitHub `owner/repo` slugs. Private repositories are
153
+ maintainer-only and should be supplied from ignored local lab manifests with an
154
+ authorized `GH_TOKEN` or `GITHUB_TOKEN` loaded via `--env-file`. When a GitHub
155
+ token is present, durable run artifacts redact repo labels by default; pass
156
+ `--no-redact-repos` only for public-safe repo selections. Live E2B stream URLs
157
+ are runtime-only for the attached Observer server and are not persisted to
158
+ `run.json` or `observer-data.json`. Local bundles remain ignored under
159
+ `.mimetic/`; do not publish private screenshots, logs, or upstream details.
160
+
107
161
  ## Development
108
162
 
109
163
  ```bash
@@ -119,6 +173,7 @@ Local dogfood:
119
173
  pnpm mimetic:watch
120
174
  pnpm mimetic:verify
121
175
  pnpm mimetic:feedback
176
+ pnpm mimetic:lab:list
122
177
  ```
123
178
 
124
179
  ## Docs
@@ -0,0 +1,14 @@
1
+ export declare const ENV_FILE_RESULT_SCHEMA = "mimetic.env-file-result.v1";
2
+ export interface EnvFileLoadResult {
3
+ schema: typeof ENV_FILE_RESULT_SCHEMA;
4
+ ok: boolean;
5
+ cwd: string;
6
+ envFile: string;
7
+ loaded: string[];
8
+ skipped: string[];
9
+ error?: {
10
+ code: "MIMETIC_ENV_FILE_NOT_FOUND" | "MIMETIC_ENV_FILE_INVALID";
11
+ message: string;
12
+ };
13
+ }
14
+ export declare function loadEnvFile(cwd: string, envFile: string, env?: NodeJS.ProcessEnv): Promise<EnvFileLoadResult>;
@@ -0,0 +1,108 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ export const ENV_FILE_RESULT_SCHEMA = "mimetic.env-file-result.v1";
4
+ const envNamePattern = /^[A-Za-z_][A-Za-z0-9_]*$/;
5
+ export async function loadEnvFile(cwd, envFile, env = process.env) {
6
+ const resolvedCwd = path.resolve(cwd);
7
+ const envPath = path.resolve(resolvedCwd, envFile);
8
+ const loaded = [];
9
+ const skipped = [];
10
+ let text;
11
+ try {
12
+ text = await readFile(envPath, "utf8");
13
+ }
14
+ catch {
15
+ return {
16
+ schema: ENV_FILE_RESULT_SCHEMA,
17
+ ok: false,
18
+ cwd: resolvedCwd,
19
+ envFile,
20
+ loaded,
21
+ skipped,
22
+ error: {
23
+ code: "MIMETIC_ENV_FILE_NOT_FOUND",
24
+ message: `Env file was not readable: ${envFile}`
25
+ }
26
+ };
27
+ }
28
+ const lines = text.split(/\r?\n/);
29
+ for (let index = 0; index < lines.length; index += 1) {
30
+ const parsed = parseEnvLine(lines[index] ?? "");
31
+ if (parsed === null) {
32
+ continue;
33
+ }
34
+ if (!parsed.ok) {
35
+ return {
36
+ schema: ENV_FILE_RESULT_SCHEMA,
37
+ ok: false,
38
+ cwd: resolvedCwd,
39
+ envFile,
40
+ loaded,
41
+ skipped,
42
+ error: {
43
+ code: "MIMETIC_ENV_FILE_INVALID",
44
+ message: `Invalid env assignment on line ${index + 1}.`
45
+ }
46
+ };
47
+ }
48
+ if (env[parsed.name] !== undefined) {
49
+ skipped.push(parsed.name);
50
+ continue;
51
+ }
52
+ env[parsed.name] = parsed.value;
53
+ loaded.push(parsed.name);
54
+ }
55
+ return {
56
+ schema: ENV_FILE_RESULT_SCHEMA,
57
+ ok: true,
58
+ cwd: resolvedCwd,
59
+ envFile,
60
+ loaded,
61
+ skipped
62
+ };
63
+ }
64
+ function parseEnvLine(line) {
65
+ const trimmed = line.trim();
66
+ if (!trimmed || trimmed.startsWith("#")) {
67
+ return null;
68
+ }
69
+ const assignment = trimmed.startsWith("export ") ? trimmed.slice("export ".length).trim() : trimmed;
70
+ const separator = assignment.indexOf("=");
71
+ if (separator <= 0) {
72
+ return { ok: false };
73
+ }
74
+ const name = assignment.slice(0, separator).trim();
75
+ if (!envNamePattern.test(name)) {
76
+ return { ok: false };
77
+ }
78
+ const rawValue = assignment.slice(separator + 1).trim();
79
+ const value = unquoteEnvValue(rawValue);
80
+ if (value === null) {
81
+ return { ok: false };
82
+ }
83
+ return { ok: true, name, value };
84
+ }
85
+ function unquoteEnvValue(value) {
86
+ if (!value) {
87
+ return "";
88
+ }
89
+ const first = value[0];
90
+ const last = value[value.length - 1];
91
+ if ((first === "\"" || first === "'") && last !== first) {
92
+ return null;
93
+ }
94
+ if (first === "\"" && last === "\"") {
95
+ return value
96
+ .slice(1, -1)
97
+ .replace(/\\n/g, "\n")
98
+ .replace(/\\r/g, "\r")
99
+ .replace(/\\t/g, "\t")
100
+ .replace(/\\"/g, "\"")
101
+ .replace(/\\\\/g, "\\");
102
+ }
103
+ if (first === "'" && last === "'") {
104
+ return value.slice(1, -1);
105
+ }
106
+ return value.replace(/\s+#.*$/, "");
107
+ }
108
+ //# sourceMappingURL=env-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-file.js","sourceRoot":"","sources":["../src/env-file.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { RunFeedbackCandidate } from "./run.js";
1
2
  export declare const FEEDBACK_SCHEMA = "mimetic.feedback.v1";
2
3
  export declare const FEEDBACK_RESULT_SCHEMA = "mimetic.feedback-result.v1";
3
4
  export interface FeedbackDraft {
@@ -6,16 +7,17 @@ export interface FeedbackDraft {
6
7
  adapter_id: string;
7
8
  scenario_id: string;
8
9
  persona_id: string;
9
- actor: "synthetic-dry-run";
10
- substrate: "local-filesystem";
11
- failure_owner: "harness";
10
+ actor: RunFeedbackCandidate["actor"];
11
+ substrate: RunFeedbackCandidate["substrate"];
12
+ failure_owner: RunFeedbackCandidate["failure_owner"];
12
13
  summary: string;
13
14
  expected: string;
14
15
  actual: string;
16
+ source_candidate_id?: string;
15
17
  source_bundle: string;
16
18
  evidence: Array<{
17
19
  path: string;
18
- kind: "review" | "state";
20
+ kind: RunFeedbackCandidate["evidence"][number]["kind"];
19
21
  note: string;
20
22
  }>;
21
23
  redaction: {
@@ -23,7 +25,7 @@ export interface FeedbackDraft {
23
25
  notes: string;
24
26
  };
25
27
  idempotency_key: string;
26
- proposed_next_state: "watch";
28
+ proposed_next_state: RunFeedbackCandidate["proposed_next_state"];
27
29
  acceptance_proof: string[];
28
30
  }
29
31
  export interface FeedbackResult {
package/dist/feedback.js CHANGED
@@ -124,6 +124,43 @@ export async function listFeedback(cwdInput, runInput) {
124
124
  };
125
125
  }
126
126
  function buildDraft(bundle, bundlePath) {
127
+ const candidate = bundle.feedbackCandidates.find((item) => isUsableFeedbackCandidate(item));
128
+ if (candidate) {
129
+ return {
130
+ schema: FEEDBACK_SCHEMA,
131
+ run_id: bundle.runId,
132
+ adapter_id: candidate.adapter_id,
133
+ scenario_id: candidate.scenario_id,
134
+ persona_id: candidate.persona_id,
135
+ actor: candidate.actor,
136
+ substrate: candidate.substrate,
137
+ failure_owner: candidate.failure_owner,
138
+ summary: candidate.summary,
139
+ expected: candidate.expected,
140
+ actual: candidate.actual,
141
+ source_candidate_id: candidate.id,
142
+ source_bundle: bundlePath,
143
+ evidence: [
144
+ {
145
+ path: bundlePath,
146
+ kind: "state",
147
+ note: "Source run bundle."
148
+ },
149
+ ...candidate.evidence.map((item) => ({
150
+ path: path.join(path.dirname(bundlePath), item.path),
151
+ kind: item.kind,
152
+ note: item.note
153
+ }))
154
+ ],
155
+ redaction: {
156
+ status: "passed",
157
+ notes: candidate.redaction.notes
158
+ },
159
+ idempotency_key: candidate.idempotency_key,
160
+ proposed_next_state: candidate.proposed_next_state,
161
+ acceptance_proof: candidate.acceptance_proof
162
+ };
163
+ }
127
164
  return {
128
165
  schema: FEEDBACK_SCHEMA,
129
166
  run_id: bundle.runId,
@@ -161,10 +198,30 @@ function buildDraft(bundle, bundlePath) {
161
198
  ]
162
199
  };
163
200
  }
201
+ function isUsableFeedbackCandidate(candidate) {
202
+ if (!isRecord(candidate)
203
+ || candidate.schema !== "mimetic.feedback-candidate.v1"
204
+ || !isRecord(candidate.redaction)
205
+ || candidate.redaction.status !== "passed"
206
+ || typeof candidate.summary !== "string"
207
+ || candidate.summary.trim().length === 0
208
+ || !Array.isArray(candidate.evidence)) {
209
+ return false;
210
+ }
211
+ return candidate.evidence.every((item) => isRecord(item)
212
+ && typeof item.path === "string"
213
+ && item.path.length > 0
214
+ && !path.isAbsolute(item.path)
215
+ && !item.path.includes("://")
216
+ && !item.path.includes(".."));
217
+ }
218
+ function isRecord(value) {
219
+ return typeof value === "object" && value !== null && !Array.isArray(value);
220
+ }
164
221
  function renderMarkdown(draft, repo) {
165
- return `This issue was drafted by Mimetic from a verified dry-run bundle.
222
+ return `This issue was drafted by Mimetic from a verified Mimetic run bundle.
166
223
 
167
- It contributes to public-safe simulation harness coverage. It does not claim product behavior proof.
224
+ It contributes to public-safe simulation harness coverage. The feedback command did not mutate GitHub, commit code, or claim unobserved product behavior.
168
225
 
169
226
  ## Summary
170
227
 
@@ -186,7 +243,7 @@ ${draft.evidence.map((item) => `- ${item.kind}: \`${item.path}\` - ${item.note}`
186
243
 
187
244
  - Repository: ${repo}
188
245
  - GitHub mutation: not performed
189
- - Provider spend: not used
246
+ - Substrate: ${draft.substrate}
190
247
  - Production data: not used
191
248
 
192
249
  \`\`\`yaml
@@ -199,7 +256,7 @@ mimetic_feedback:
199
256
  actor: ${draft.actor}
200
257
  substrate: ${draft.substrate}
201
258
  failure_owner: ${draft.failure_owner}
202
- source_bundle: ${draft.source_bundle}
259
+ ${draft.source_candidate_id ? ` source_candidate_id: ${draft.source_candidate_id}\n` : ""} source_bundle: ${draft.source_bundle}
203
260
  evidence:
204
261
  ${draft.evidence.map((item) => ` - path: ${item.path}\n kind: ${item.kind}\n note: ${item.note}`).join("\n")}
205
262
  redaction:
@@ -1 +1 @@
1
- {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../src/feedback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../src/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGpD,MAAM,CAAC,MAAM,eAAe,GAAG,qBAAqB,CAAC;AACrD,MAAM,CAAC,MAAM,sBAAsB,GAAG,4BAA4B,CAAC;AA8CnE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,QAAgB;IACpE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAElD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,MAAM,EAAE,sBAAsB;YAC9B,EAAE,EAAE,KAAK;YACT,GAAG;YACH,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,kBAAkB,QAAQ,EAAE;aACtC;SACF,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO;YACL,MAAM,EAAE,sBAAsB;YAC9B,EAAE,EAAE,KAAK;YACT,GAAG;YACH,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,4BAA4B;gBAClC,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,iCAAiC;aACtE;SACF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAElC,OAAO;QACL,MAAM,EAAE,sBAAsB;QAC9B,EAAE,EAAE,IAAI;QACR,GAAG;QACH,GAAG,EAAE,QAAQ;QACb,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;QACxC,KAAK;KACN,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,QAAgB;IACrE,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAExD,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,eAAe,GAAG,EAAE,CAAC;IAC3B,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC7D,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,GAAG,OAAO;YACV,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,IAAI,EAAE,gCAAgC;gBACtC,OAAO,EAAE,8BAA8B,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACpE;SACF,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,QAAgB,EAChB,IAAY;IAEZ,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE1D,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC3D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACnE,MAAM,SAAS,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAElD,OAAO;QACL,GAAG,QAAQ;QACX,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;QACjD,aAAa;KACd,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,QAAgB,EAAE,IAAY;IACnF,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAErE,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC/D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACpD,OAAO;QACL,GAAG,QAAQ;QACX,QAAQ,EAAE,sBAAsB,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,kBAAkB,CAAC,KAAK,CAAC,SAAS,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;KAC9J,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,QAAgB;IACnE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAElD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,MAAM,EAAE,sBAAsB;YAC9B,EAAE,EAAE,KAAK;YACT,GAAG;YACH,GAAG,EAAE,QAAQ;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,kBAAkB,QAAQ,EAAE;aACtC;SACF,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAkB,CAAC;IAEtF,OAAO;QACL,MAAM,EAAE,sBAAsB;QAC9B,EAAE,EAAE,IAAI;QACR,GAAG;QACH,GAAG,EAAE,QAAQ;QACb,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtE,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,MAAiB,EAAE,UAAkB;IACvD,MAAM,SAAS,GAAG,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAgC,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1H,IAAI,SAAS,EAAE,CAAC;QACd,OAAO;YACL,MAAM,EAAE,eAAe;YACvB,MAAM,EAAE,MAAM,CAAC,KAAK;YACpB,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,mBAAmB,EAAE,SAAS,CAAC,EAAE;YACjC,aAAa,EAAE,UAAU;YACzB,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,oBAAoB;iBAC3B;gBACD,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACnC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;oBACpD,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC,CAAC;aACJ;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,KAAK;aACjC;YACD,eAAe,EAAE,SAAS,CAAC,eAAe;YAC1C,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;YAClD,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;SAC7C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE,MAAM,CAAC,KAAK;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,IAAI,eAAe;QACxD,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;QAC7B,KAAK,EAAE,mBAAmB;QAC1B,SAAS,EAAE,kBAAkB;QAC7B,aAAa,EAAE,SAAS;QACxB,OAAO,EAAE,yDAAyD;QAClE,QAAQ,EAAE,wFAAwF;QAClG,MAAM,EAAE,mGAAmG;QAC3G,aAAa,EAAE,UAAU;QACzB,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,uBAAuB;aAC9B;YACD;gBACE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;gBACtD,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,qDAAqD;aAC5D;SACF;QACD,SAAS,EAAE;YACT,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK;SAC9B;QACD,eAAe,EAAE,WAAW,MAAM,CAAC,KAAK,yBAAyB;QACjE,mBAAmB,EAAE,OAAO;QAC5B,gBAAgB,EAAE;YAChB,gCAAgC,MAAM,CAAC,KAAK,SAAS;YACrD,+BAA+B,MAAM,CAAC,KAAK,YAAY;SACxD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,SAAkB;IACnD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;WACnB,SAAS,CAAC,MAAM,KAAK,+BAA+B;WACpD,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC;WAC9B,SAAS,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ;WACvC,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ;WACrC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;WACrC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EACrC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CACvC,QAAQ,CAAC,IAAI,CAAC;WACX,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;WAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;WACpB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;WAC3B,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;WAC1B,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,cAAc,CAAC,KAAoB,EAAE,IAAY;IACxD,OAAO;;;;;;EAMP,KAAK,CAAC,OAAO;;;;EAIb,KAAK,CAAC,QAAQ;;;;EAId,KAAK,CAAC,MAAM;;;;EAIZ,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;gBAI5E,IAAI;;eAEL,KAAK,CAAC,SAAS;;;;;YAKlB,KAAK,CAAC,MAAM;YACZ,KAAK,CAAC,MAAM;gBACR,KAAK,CAAC,UAAU;iBACf,KAAK,CAAC,WAAW;gBAClB,KAAK,CAAC,UAAU;WACrB,KAAK,CAAC,KAAK;eACP,KAAK,CAAC,SAAS;mBACX,KAAK,CAAC,aAAa;EACpC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,0BAA0B,KAAK,CAAC,mBAAmB,IAAI,CAAC,CAAC,CAAC,EAAE,oBAAoB,KAAK,CAAC,aAAa;;EAE/H,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,IAAI,CAAC,IAAI,iBAAiB,IAAI,CAAC,IAAI,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;cAE3G,KAAK,CAAC,SAAS,CAAC,MAAM;aACvB,KAAK,CAAC,SAAS,CAAC,KAAK;qBACb,KAAK,CAAC,eAAe;yBACjB,KAAK,CAAC,mBAAmB;;EAEhD,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;CAEnE,CAAC;AACF,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,QAAgB,EAAE,KAAc;IACvD,MAAM,SAAS,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -14,6 +14,19 @@ Keep this directory public-safe:
14
14
  - no PII, PHI, secrets, raw private transcripts, private screenshots, customer data, or patient data.
15
15
 
16
16
  Generated run bundles, screenshots, traces, logs, and local overrides belong in ignored \`.mimetic/\`.
17
+
18
+ Labs:
19
+
20
+ - committed reusable labs live in mimetic/labs/*.yaml;
21
+ - private or machine-local labs live in ignored .mimetic/labs/*.yaml or .mimetic/local/labs/*.yaml;
22
+ - run a lab with \`mimetic watch <lab>\` or \`mimetic lab run <lab>\`.
23
+
24
+ Format standard:
25
+
26
+ - human-authored Mimetic source uses .yaml;
27
+ - executable integration uses .ts;
28
+ - generated artifacts, synthetic fixtures, and event streams use .json or .ndjson;
29
+ - .yml is reserved for outside ecosystem files such as GitHub Actions, not Mimetic source.
17
30
  `
18
31
  },
19
32
  {
@@ -101,6 +114,20 @@ steps:
101
114
  expectation: No real user data is entered.
102
115
  - name: Check recovery path
103
116
  expectation: The user can back out or retry safely.
117
+ `
118
+ },
119
+ {
120
+ path: "mimetic/labs/first-run.yaml",
121
+ plane: "source",
122
+ contents: `schema: mimetic.lab.v1
123
+ id: first-run
124
+ kind: synthetic
125
+ title: First-run synthetic Observer
126
+ description: Public-safe starter lab that generates a synthetic run bundle and Observer without provider spend.
127
+ sims: 4
128
+ defaults:
129
+ dryRun: true
130
+ open: true
104
131
  `
105
132
  },
106
133
  {
@@ -236,6 +263,8 @@ export const runtimeDirectories = [
236
263
  { path: ".mimetic/cache", plane: "runtime" },
237
264
  { path: ".mimetic/tmp", plane: "runtime" },
238
265
  { path: ".mimetic/logs", plane: "runtime" },
266
+ { path: ".mimetic/labs", plane: "runtime" },
267
+ { path: ".mimetic/local/labs", plane: "runtime" },
239
268
  { path: ".mimetic/local/personas", plane: "runtime" },
240
269
  { path: ".mimetic/local/policies", plane: "runtime" },
241
270
  { path: ".mimetic/secrets", plane: "runtime" }
@@ -1 +1 @@
1
- {"version":3,"file":"init-templates.js","sourceRoot":"","sources":["../src/init-templates.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,YAAY,GAAkB;IACzC;QACE,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;;;;;;;;;;;;CAYb;KACE;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;;;;;;;;;;;;CAYb;KACE;IACD;QACE,IAAI,EAAE,0CAA0C;QAChD,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;;;;;;;;;;;;CAYb;KACE;IACD;QACE,IAAI,EAAE,4CAA4C;QAClD,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;;;;;;;;;;;;CAYb;KACE;IACD;QACE,IAAI,EAAE,wCAAwC;QAC9C,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;;;;;;;;;;;;;CAab;KACE;IACD;QACE,IAAI,EAAE,8CAA8C;QACpD,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;;;;;;;;;;;;;CAab;KACE;IACD;QACE,IAAI,EAAE,iCAAiC;QACvC,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;;;;;;;;;;;;;;CAcb;KACE;IACD;QACE,IAAI,EAAE,+BAA+B;QACrC,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;;;;;;;CAOb;KACE;IACD;QACE,IAAI,EAAE,2CAA2C;QACjD,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;;;;;;;;CAQb;KACE;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;;;;;;;;;;;;CAYb;KACE;IACD;QACE,IAAI,EAAE,gCAAgC;QACtC,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;;;;;;;;;;CAUb;KACE;IACD;QACE,IAAI,EAAE,gCAAgC;QACtC,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;;;;;;;;CAQb;KACE;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;;;;;CAKb;KACE;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;;;;;;CAMb;KACE;IACD;QACE,IAAI,EAAE,6CAA6C;QACnD,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE;;;;;;;;;;;;CAYb;KACE;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAuB;IACpD,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE;IAC3C,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE;IAC5C,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE;IAC1C,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE;IAC3C,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,SAAS,EAAE;IACrD,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,SAAS,EAAE;IACrD,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,SAAS,EAAE;CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,OAAO,EAAE,SAAS;IAClB,gBAAgB,EAAE,gBAAgB;IAClC,aAAa,EAAE,uBAAuB;IACtC,eAAe,EAAE,eAAe;IAChC,kBAAkB,EAAE,gCAAgC;IACpD,gBAAgB,EAAE,gBAAgB;CACnC,CAAC"}
1
+ {"version":3,"file":"init-templates.js","sourceRoot":"","sources":["../src/init-templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ export declare const LAB_APP_RUNNER_PLAN_SCHEMA = "mimetic.lab-app-runner-plan.v1";
2
+ export type LabAppFramework = "next" | "vite" | "generic" | "none";
3
+ export type LabPackageManager = "npm" | "pnpm" | "yarn" | "bun";
4
+ export type LabInstallMode = "run" | "skip" | "when-missing";
5
+ export type LabSurfaceKind = "desktop" | "mobile";
6
+ export interface LabPackageJsonMetadata {
7
+ dependencies?: Record<string, string>;
8
+ devDependencies?: Record<string, string>;
9
+ packageManager?: string;
10
+ scripts?: Record<string, string>;
11
+ }
12
+ export interface LabAppRunnerMetadata {
13
+ dependencies?: Record<string, string>;
14
+ devDependencies?: Record<string, string>;
15
+ hasNodeModules?: boolean;
16
+ lockfiles?: string[];
17
+ packageJson?: LabPackageJsonMetadata;
18
+ packageManager?: string;
19
+ preferredPort?: number;
20
+ readinessIntervalMs?: number;
21
+ readinessTimeoutMs?: number;
22
+ scripts?: Record<string, string>;
23
+ }
24
+ export interface LabAppRunnerInstallPlan {
25
+ command: string;
26
+ mode: LabInstallMode;
27
+ reason: string;
28
+ }
29
+ export interface LabAppRunnerDevServerPlan {
30
+ command: string;
31
+ framework: Exclude<LabAppFramework, "none">;
32
+ port: number;
33
+ reason: string;
34
+ scriptName: string;
35
+ url: string;
36
+ }
37
+ export interface LabAppRunnerReadinessPlan {
38
+ command: string;
39
+ intervalMs: number;
40
+ timeoutMs: number;
41
+ url: string;
42
+ }
43
+ export interface LabAppSurface {
44
+ command: string;
45
+ id: LabSurfaceKind;
46
+ label: string;
47
+ url: string;
48
+ viewport: {
49
+ deviceScaleFactor: number;
50
+ height: number;
51
+ isMobile: boolean;
52
+ width: number;
53
+ };
54
+ }
55
+ export interface LabAppRunnerShellPlan {
56
+ commands: string[];
57
+ script: string;
58
+ }
59
+ export interface LabAppRunnerPlan {
60
+ devServer?: LabAppRunnerDevServerPlan;
61
+ framework: LabAppFramework;
62
+ install: LabAppRunnerInstallPlan;
63
+ ok: boolean;
64
+ packageManager: LabPackageManager;
65
+ readiness?: LabAppRunnerReadinessPlan;
66
+ schema: typeof LAB_APP_RUNNER_PLAN_SCHEMA;
67
+ shell: LabAppRunnerShellPlan;
68
+ surfaces: LabAppSurface[];
69
+ warnings: string[];
70
+ }
71
+ export declare function buildLabAppRunnerPlan(metadata: LabAppRunnerMetadata): LabAppRunnerPlan;
72
+ export declare function renderLabAppRunnerShell(args: {
73
+ devServer?: LabAppRunnerDevServerPlan;
74
+ install: LabAppRunnerInstallPlan;
75
+ packageManager: LabPackageManager;
76
+ readiness?: LabAppRunnerReadinessPlan;
77
+ surfaces?: LabAppSurface[];
78
+ }): LabAppRunnerShellPlan;