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
@@ -0,0 +1,393 @@
1
+ export const OSS_REMOTE_TELEMETRY_SCHEMA = "mimetic.oss-remote-telemetry.v1";
2
+ const REDACTED_URL_PARAM = "[redacted-url-param]";
3
+ const DEFAULT_COMPLETION_CHECKED_AT = "1970-01-01T00:00:00.000Z";
4
+ const secretPatterns = [
5
+ {
6
+ name: "openai-token",
7
+ pattern: /\bsk-(?:proj-)?[A-Za-z0-9_-]{20,}\b/g,
8
+ replacement: "[redacted-openai-key]"
9
+ },
10
+ {
11
+ name: "github-token",
12
+ pattern: /\b(?:gh[pousr]_[A-Za-z0-9_]{12,}|github_pat_[A-Za-z0-9_]{12,})\b/g,
13
+ replacement: "[redacted-github-token]"
14
+ },
15
+ {
16
+ name: "e2b-token",
17
+ pattern: /\be2b_[A-Za-z0-9_-]{12,}\b/g,
18
+ replacement: "[redacted-e2b-key]"
19
+ },
20
+ {
21
+ name: "bearer-token",
22
+ pattern: /\bBearer\s+[A-Za-z0-9._~+/=-]{12,}\b/gi,
23
+ replacement: "Bearer [redacted-token]"
24
+ }
25
+ ];
26
+ export function buildOssRemoteTelemetry(input) {
27
+ const checkedAt = input.checkedAt ?? new Date().toISOString();
28
+ const redactedFields = new Set();
29
+ const sanitizeField = (field, value) => {
30
+ const sanitized = redactOssRemoteTelemetryText(value);
31
+ if (sanitized !== value) {
32
+ redactedFields.add(field);
33
+ }
34
+ return sanitized;
35
+ };
36
+ const sanitizeUrlField = (field, value) => {
37
+ const sanitized = sanitizeOssRemoteTelemetryUrl(value);
38
+ if (sanitized !== value) {
39
+ redactedFields.add(field);
40
+ }
41
+ return sanitized;
42
+ };
43
+ const fallbackLogTail = sanitizeField("logTail", input.logTail ?? "");
44
+ const completion = parseOssRemoteCompletion(input.completionJson ?? null, {
45
+ checkedAt,
46
+ fallbackLogTail
47
+ });
48
+ const processText = sanitizeField("processStateText", input.processStateText ?? "");
49
+ const process = {
50
+ state: classifyOssRemoteProcessState(processText),
51
+ summary: summarizeProcessState(processText),
52
+ text: processText
53
+ };
54
+ const appStatusText = sanitizeField("appStatusText", input.appStatusText ?? "");
55
+ const appUrl = normalizeOptionalText(input.appUrl);
56
+ const sanitizedAppUrl = appUrl ? sanitizeUrlField("appUrl", appUrl) : undefined;
57
+ const app = {
58
+ status: classifyOssRemoteAppStatus({
59
+ statusText: appStatusText,
60
+ ...(sanitizedAppUrl ? { url: sanitizedAppUrl } : {})
61
+ }),
62
+ statusText: appStatusText,
63
+ ...(sanitizedAppUrl ? { url: sanitizedAppUrl } : {})
64
+ };
65
+ const streamUrl = normalizeOptionalText(input.streamUrl);
66
+ const sanitizedStreamUrl = streamUrl ? sanitizeUrlField("streamUrl", streamUrl) : undefined;
67
+ const stream = {
68
+ present: Boolean(sanitizedStreamUrl),
69
+ ...(sanitizedStreamUrl ? { url: sanitizedStreamUrl } : {})
70
+ };
71
+ const nestedObserverPath = normalizeOptionalText(input.nestedObserverPath);
72
+ const sanitizedNestedObserverPath = nestedObserverPath
73
+ ? sanitizeField("nestedObserverPath", nestedObserverPath)
74
+ : undefined;
75
+ const nestedObserverPresent = input.nestedObserverPresent ?? completion.nestedObserverPresent;
76
+ const nestedObserver = {
77
+ presence: nestedObserverPresent === true
78
+ ? "present"
79
+ : nestedObserverPresent === false ? "missing" : "unknown",
80
+ ...(sanitizedNestedObserverPath ? { path: sanitizedNestedObserverPath } : {})
81
+ };
82
+ const actorText = sanitizeField("actorStateText", input.actorStateText ?? "");
83
+ const actorState = classifyOssRemoteActorState(actorText, process.state, completion.status);
84
+ const actor = {
85
+ state: actorState,
86
+ summary: summarizeActorState(actorState, actorText),
87
+ text: actorText
88
+ };
89
+ const status = resolveLaneStatus(completion.status, process.state, app.status, actor.state);
90
+ return {
91
+ schema: OSS_REMOTE_TELEMETRY_SCHEMA,
92
+ checkedAt,
93
+ status,
94
+ completion,
95
+ process,
96
+ app,
97
+ stream,
98
+ nestedObserver,
99
+ actor,
100
+ redaction: {
101
+ status: "passed",
102
+ redacted: redactedFields.size > 0,
103
+ fields: [...redactedFields].sort(),
104
+ notes: redactedFields.size > 0
105
+ ? "Remote bootstrap evidence was sanitized before telemetry modeling."
106
+ : "Remote bootstrap evidence contained no recognized token or auth URL patterns."
107
+ }
108
+ };
109
+ }
110
+ export function parseOssRemoteCompletion(payload, options = {}) {
111
+ const checkedAt = options.checkedAt ?? DEFAULT_COMPLETION_CHECKED_AT;
112
+ const parsed = parseCompletionPayload(payload);
113
+ if (!parsed) {
114
+ return {
115
+ checkedAt,
116
+ present: false,
117
+ ...(options.fallbackLogTail ? { logTail: tailLines(options.fallbackLogTail, 80) } : {}),
118
+ reason: "Remote bootstrap completion marker is missing.",
119
+ status: "missing"
120
+ };
121
+ }
122
+ const status = normalizeOssRemoteCompletionStatus(parsed.status);
123
+ if (!status) {
124
+ return {
125
+ checkedAt,
126
+ present: false,
127
+ ...(options.fallbackLogTail ? { logTail: tailLines(options.fallbackLogTail, 80) } : {}),
128
+ reason: "Remote bootstrap completion marker is missing a recognized status.",
129
+ status: "missing"
130
+ };
131
+ }
132
+ const nestedVerifyPassed = normalizeNestedVerifyPassed(parsed);
133
+ const logTail = typeof parsed.logTail === "string"
134
+ ? tailLines(redactOssRemoteTelemetryText(parsed.logTail), 80)
135
+ : options.fallbackLogTail ? tailLines(options.fallbackLogTail, 80) : undefined;
136
+ return {
137
+ checkedAt: typeof parsed.completedAt === "string" && parsed.completedAt.trim()
138
+ ? redactOssRemoteTelemetryText(parsed.completedAt).trim()
139
+ : checkedAt,
140
+ present: true,
141
+ reason: completionReason(parsed.reason, status),
142
+ status,
143
+ ...(typeof parsed.exitCode === "number" && Number.isFinite(parsed.exitCode) ? { exitCode: parsed.exitCode } : {}),
144
+ ...(logTail ? { logTail } : {}),
145
+ ...(typeof parsed.nestedObserverPresent === "boolean" ? { nestedObserverPresent: parsed.nestedObserverPresent } : {}),
146
+ ...(nestedVerifyPassed === undefined ? {} : { nestedVerifyPassed })
147
+ };
148
+ }
149
+ export function normalizeOssRemoteCompletionStatus(value) {
150
+ return value === "running"
151
+ || value === "passed"
152
+ || value === "failed"
153
+ || value === "blocked"
154
+ || value === "timed_out"
155
+ ? value
156
+ : null;
157
+ }
158
+ export function classifyOssRemoteProcessState(text) {
159
+ const normalized = text.trim();
160
+ if (!normalized) {
161
+ return "unknown";
162
+ }
163
+ if (/\bsuspended\b|\bstopped\b|\bsigtstp\b|\bsigstop\b/i.test(normalized)
164
+ || /\bstate\s*[:=]\s*t\b/i.test(normalized)
165
+ || /\bstat(?:e)?\s*[:=]?\s*[^\n]*\bT\+?\b/.test(normalized)
166
+ || /(?:^|\n)\s*\d+\s+T\+?\s+\S+/.test(normalized)
167
+ || /\bT\+?\s+(?:\d|pts\/|tty)/.test(normalized)) {
168
+ return "suspended";
169
+ }
170
+ if (/\b(?:exited|exit code|terminated|defunct|zombie|not running|no process|dead)\b/i.test(normalized)) {
171
+ return "exited";
172
+ }
173
+ if (/\b(?:running|listening|ready|started|pid\s*[=:]?\s*\d+)\b/i.test(normalized)
174
+ || /\bstate\s*[:=]\s*[rs]\b/i.test(normalized)
175
+ || /\bstat(?:e)?\s*[:=]?\s*[^\n]*\b[RS]\+?\b/.test(normalized)) {
176
+ return "running";
177
+ }
178
+ return "unknown";
179
+ }
180
+ export function classifyOssRemoteAppStatus(input) {
181
+ const statusText = input.statusText?.trim() ?? "";
182
+ if (!statusText && !input.url) {
183
+ return "missing";
184
+ }
185
+ if (/\b(?:200|204|ok|healthy|ready|running|listening|started|serving|vite ready|compiled successfully)\b/i.test(statusText)) {
186
+ return "running";
187
+ }
188
+ if (/\b(?:connection refused|eaddrinuse|failed|stopped|not running|timeout|timed out|cannot connect|no server)\b/i.test(statusText)) {
189
+ return "stopped";
190
+ }
191
+ return input.url ? "unknown" : "missing";
192
+ }
193
+ export function classifyOssRemoteActorState(actorStateText, processState = "unknown", completionStatus = "missing") {
194
+ const normalized = actorStateText.trim();
195
+ if (/\bsuspended\b|\bstopped\b|\bsigtstp\b|\bsigstop\b/i.test(normalized) || processState === "suspended") {
196
+ return "suspended";
197
+ }
198
+ if (/\btimed[ _-]?out\b|\btimeout\b/i.test(normalized) || completionStatus === "timed_out") {
199
+ return "timed_out";
200
+ }
201
+ if (/\bblocked\b/i.test(normalized) || completionStatus === "blocked") {
202
+ return "blocked";
203
+ }
204
+ if (/\b(?:failed|failure|exit code [1-9]\d*)\b/i.test(normalized) || completionStatus === "failed") {
205
+ return "failed";
206
+ }
207
+ if (/\b(?:passed|success|complete|completed)\b/i.test(normalized) || completionStatus === "passed") {
208
+ return "passed";
209
+ }
210
+ if (/\b(?:running|watching|active|spawned|pid\s*[=:]?\s*\d+)\b/i.test(normalized)
211
+ || processState === "running"
212
+ || completionStatus === "running") {
213
+ return "running";
214
+ }
215
+ return "unknown";
216
+ }
217
+ export function redactOssRemoteTelemetryText(value) {
218
+ const withoutUrlSecrets = replaceUrls(value, sanitizeOssRemoteTelemetryUrl);
219
+ return applySecretPatterns(withoutUrlSecrets);
220
+ }
221
+ export function sanitizeOssRemoteTelemetryUrl(value) {
222
+ return redactAuthQueryParams(applySecretPatterns(value));
223
+ }
224
+ function parseCompletionPayload(payload) {
225
+ if (!payload) {
226
+ return null;
227
+ }
228
+ if (typeof payload !== "string") {
229
+ return payload;
230
+ }
231
+ if (!payload.trim()) {
232
+ return null;
233
+ }
234
+ try {
235
+ const parsed = JSON.parse(payload);
236
+ return isRecord(parsed) ? parsed : null;
237
+ }
238
+ catch {
239
+ return null;
240
+ }
241
+ }
242
+ function normalizeNestedVerifyPassed(parsed) {
243
+ if (typeof parsed.nestedVerifyPassed === "boolean") {
244
+ return parsed.nestedVerifyPassed;
245
+ }
246
+ if (parsed.nestedVerifyStatus === "passed") {
247
+ return true;
248
+ }
249
+ if (parsed.nestedVerifyStatus === "failed") {
250
+ return false;
251
+ }
252
+ return undefined;
253
+ }
254
+ function completionReason(reason, status) {
255
+ if (typeof reason === "string" && reason.trim()) {
256
+ return compactReason(redactOssRemoteTelemetryText(reason));
257
+ }
258
+ switch (status) {
259
+ case "passed":
260
+ return "Remote bootstrap completed successfully.";
261
+ case "failed":
262
+ return "Remote bootstrap failed.";
263
+ case "blocked":
264
+ return "Remote bootstrap is blocked.";
265
+ case "timed_out":
266
+ return "Remote bootstrap completion timed out.";
267
+ case "running":
268
+ return "Remote bootstrap is still running.";
269
+ }
270
+ }
271
+ function resolveLaneStatus(completionStatus, processState, appStatus, actorState) {
272
+ if (completionStatus === "passed"
273
+ || completionStatus === "failed"
274
+ || completionStatus === "blocked"
275
+ || completionStatus === "timed_out"
276
+ || completionStatus === "running") {
277
+ return completionStatus;
278
+ }
279
+ if (actorState === "failed" || actorState === "blocked" || actorState === "timed_out" || actorState === "passed") {
280
+ return actorState;
281
+ }
282
+ if (actorState === "suspended" || processState === "suspended") {
283
+ return "blocked";
284
+ }
285
+ if (actorState === "running" || processState === "running" || appStatus === "running") {
286
+ return "running";
287
+ }
288
+ return "missing";
289
+ }
290
+ function summarizeProcessState(text) {
291
+ const state = classifyOssRemoteProcessState(text);
292
+ switch (state) {
293
+ case "running":
294
+ return "Remote process state indicates the bootstrap or actor is still running.";
295
+ case "suspended":
296
+ return "Remote process state indicates the actor is suspended or stopped.";
297
+ case "exited":
298
+ return "Remote process state indicates the bootstrap or actor exited.";
299
+ case "unknown":
300
+ return text.trim()
301
+ ? "Remote process state was captured but could not be classified."
302
+ : "No remote process state captured.";
303
+ }
304
+ }
305
+ function summarizeActorState(state, text) {
306
+ switch (state) {
307
+ case "running":
308
+ return "Actor state indicates work is still running.";
309
+ case "suspended":
310
+ return "Actor state indicates the process is suspended or stopped.";
311
+ case "passed":
312
+ return "Actor state indicates successful completion.";
313
+ case "failed":
314
+ return "Actor state indicates failure.";
315
+ case "blocked":
316
+ return "Actor state indicates a blocker.";
317
+ case "timed_out":
318
+ return "Actor state indicates timeout.";
319
+ case "unknown":
320
+ return text.trim()
321
+ ? "Actor state was captured but could not be classified."
322
+ : "No actor state captured.";
323
+ }
324
+ }
325
+ function compactReason(value) {
326
+ return value.replace(/\s+/g, " ").trim().slice(0, 240);
327
+ }
328
+ function tailLines(value, limit) {
329
+ return value.split(/\r?\n/).slice(-limit).join("\n").trim();
330
+ }
331
+ function normalizeOptionalText(value) {
332
+ const normalized = value?.trim();
333
+ return normalized ? normalized : undefined;
334
+ }
335
+ function applySecretPatterns(value) {
336
+ return secretPatterns.reduce((current, entry) => current.replace(entry.pattern, entry.replacement), value);
337
+ }
338
+ function replaceUrls(value, replacer) {
339
+ return value.replace(/\bhttps?:\/\/[^\s"'<>]+/gi, (candidate) => {
340
+ const trailing = candidate.match(/[),.;\]]+$/)?.[0] ?? "";
341
+ const body = trailing ? candidate.slice(0, -trailing.length) : candidate;
342
+ return `${replacer(body)}${trailing}`;
343
+ });
344
+ }
345
+ function redactAuthQueryParams(value) {
346
+ const queryStart = value.indexOf("?");
347
+ if (queryStart === -1) {
348
+ return value;
349
+ }
350
+ const hashStart = value.indexOf("#", queryStart);
351
+ const queryEnd = hashStart === -1 ? value.length : hashStart;
352
+ const query = value.slice(queryStart + 1, queryEnd);
353
+ const sanitizedQuery = query.split("&").map((part) => {
354
+ if (!part) {
355
+ return part;
356
+ }
357
+ const equalsIndex = part.indexOf("=");
358
+ const key = equalsIndex === -1 ? part : part.slice(0, equalsIndex);
359
+ if (!isAuthLikeQueryKey(key)) {
360
+ return part;
361
+ }
362
+ return equalsIndex === -1 ? key : `${key}=${REDACTED_URL_PARAM}`;
363
+ }).join("&");
364
+ return `${value.slice(0, queryStart + 1)}${sanitizedQuery}${value.slice(queryEnd)}`;
365
+ }
366
+ function isAuthLikeQueryKey(value) {
367
+ const normalized = safeDecodeURIComponent(value).replace(/[^a-z0-9]/gi, "").toLowerCase();
368
+ return normalized.includes("token")
369
+ || normalized.includes("secret")
370
+ || normalized.includes("password")
371
+ || normalized.includes("credential")
372
+ || normalized.includes("auth")
373
+ || normalized.includes("apikey")
374
+ || normalized.includes("signature")
375
+ || normalized.includes("bearer")
376
+ || normalized.includes("jwt")
377
+ || normalized.includes("session")
378
+ || normalized === "key"
379
+ || normalized.endsWith("key")
380
+ || normalized === "sig";
381
+ }
382
+ function safeDecodeURIComponent(value) {
383
+ try {
384
+ return decodeURIComponent(value);
385
+ }
386
+ catch {
387
+ return value;
388
+ }
389
+ }
390
+ function isRecord(value) {
391
+ return typeof value === "object" && value !== null && !Array.isArray(value);
392
+ }
393
+ //# sourceMappingURL=oss-remote-telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oss-remote-telemetry.js","sourceRoot":"","sources":["../src/oss-remote-telemetry.ts"],"names":[],"mappings":"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"}
package/dist/program.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Command } from "commander";
2
+ import type { ObserverResult } from "./observer.js";
2
3
  import type { OssMetaLabResult } from "./oss-meta-lab.js";
3
4
  export declare const CLI_RESPONSE_SCHEMA = "mimetic.cli-response.v1";
4
5
  export interface CliIo {
@@ -39,4 +40,11 @@ export declare function shouldForceExitAfterOssMetaLab(output: OssMetaLabResult,
39
40
  detach: boolean;
40
41
  wantsMachine: boolean;
41
42
  }): boolean;
43
+ export declare function shouldServeOssMetaLabObserver(output: OssMetaLabResult, options: {
44
+ wantsFollow: boolean;
45
+ }): output is OssMetaLabResult & {
46
+ observer: ObserverResult & {
47
+ ok: true;
48
+ };
49
+ };
42
50
  export declare function exitCodeForOssMetaLab(output: OssMetaLabResult): number;