shippilot 0.0.1

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 (66) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/LICENSE +21 -0
  3. package/README.md +241 -0
  4. package/dist/auth/prepareCodexHome.d.ts +7 -0
  5. package/dist/auth/prepareCodexHome.js +52 -0
  6. package/dist/auth/prepareCodexHome.js.map +1 -0
  7. package/dist/auth/validateAuth.d.ts +2 -0
  8. package/dist/auth/validateAuth.js +19 -0
  9. package/dist/auth/validateAuth.js.map +1 -0
  10. package/dist/cases/parseCase.d.ts +13 -0
  11. package/dist/cases/parseCase.js +21 -0
  12. package/dist/cases/parseCase.js.map +1 -0
  13. package/dist/cases/resolveEnv.d.ts +6 -0
  14. package/dist/cases/resolveEnv.js +19 -0
  15. package/dist/cases/resolveEnv.js.map +1 -0
  16. package/dist/cli.d.ts +2 -0
  17. package/dist/cli.js +219 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/codex/outputSchema.d.ts +72 -0
  20. package/dist/codex/outputSchema.js +48 -0
  21. package/dist/codex/outputSchema.js.map +1 -0
  22. package/dist/codex/promptBuilder.d.ts +8 -0
  23. package/dist/codex/promptBuilder.js +48 -0
  24. package/dist/codex/promptBuilder.js.map +1 -0
  25. package/dist/codex/runWithSdk.d.ts +11 -0
  26. package/dist/codex/runWithSdk.js +396 -0
  27. package/dist/codex/runWithSdk.js.map +1 -0
  28. package/dist/config/loadConfig.d.ts +2 -0
  29. package/dist/config/loadConfig.js +13 -0
  30. package/dist/config/loadConfig.js.map +1 -0
  31. package/dist/config/schema.d.ts +43 -0
  32. package/dist/config/schema.js +71 -0
  33. package/dist/config/schema.js.map +1 -0
  34. package/dist/exitCodes.d.ts +7 -0
  35. package/dist/exitCodes.js +7 -0
  36. package/dist/exitCodes.js.map +1 -0
  37. package/dist/ios/doctorXcode.d.ts +3 -0
  38. package/dist/ios/doctorXcode.js +33 -0
  39. package/dist/ios/doctorXcode.js.map +1 -0
  40. package/dist/ios/xcodebuildmcp.d.ts +15 -0
  41. package/dist/ios/xcodebuildmcp.js +95 -0
  42. package/dist/ios/xcodebuildmcp.js.map +1 -0
  43. package/dist/reports/jsonReport.d.ts +11 -0
  44. package/dist/reports/jsonReport.js +27 -0
  45. package/dist/reports/jsonReport.js.map +1 -0
  46. package/dist/reports/junitReport.d.ts +4 -0
  47. package/dist/reports/junitReport.js +39 -0
  48. package/dist/reports/junitReport.js.map +1 -0
  49. package/dist/reports/markdownReport.d.ts +4 -0
  50. package/dist/reports/markdownReport.js +46 -0
  51. package/dist/reports/markdownReport.js.map +1 -0
  52. package/dist/security/redact.d.ts +5 -0
  53. package/dist/security/redact.js +12 -0
  54. package/dist/security/redact.js.map +1 -0
  55. package/docs/auth.md +47 -0
  56. package/docs/bitrise.md +22 -0
  57. package/docs/github-actions.md +47 -0
  58. package/docs/personal-chatgpt-subscription.md +31 -0
  59. package/docs/plan.md +55 -0
  60. package/docs/release.md +87 -0
  61. package/docs/security.md +39 -0
  62. package/examples/bitrise/shippilot.sh +6 -0
  63. package/examples/github-actions/shippilot.yml +39 -0
  64. package/examples/qa/login.md +15 -0
  65. package/examples/shippilot.yml +24 -0
  66. package/package.json +51 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { z } from "zod";
2
+ export declare const codexResultSchema: z.ZodObject<{
3
+ status: z.ZodEnum<{
4
+ passed: "passed";
5
+ failed: "failed";
6
+ blocked: "blocked";
7
+ }>;
8
+ case_id: z.ZodString;
9
+ title: z.ZodString;
10
+ summary: z.ZodString;
11
+ executed_steps: z.ZodArray<z.ZodString>;
12
+ expected: z.ZodString;
13
+ observed: z.ZodString;
14
+ failure_reason: z.ZodNullable<z.ZodString>;
15
+ blocked_reason: z.ZodNullable<z.ZodString>;
16
+ confidence: z.ZodEnum<{
17
+ high: "high";
18
+ medium: "medium";
19
+ low: "low";
20
+ }>;
21
+ evidence: z.ZodArray<z.ZodString>;
22
+ }, z.core.$strip>;
23
+ export type CodexCaseResult = z.infer<typeof codexResultSchema>;
24
+ export declare const codexOutputJsonSchema: {
25
+ readonly type: "object";
26
+ readonly properties: {
27
+ readonly status: {
28
+ readonly type: "string";
29
+ readonly enum: readonly ["passed", "failed", "blocked"];
30
+ };
31
+ readonly case_id: {
32
+ readonly type: "string";
33
+ };
34
+ readonly title: {
35
+ readonly type: "string";
36
+ };
37
+ readonly summary: {
38
+ readonly type: "string";
39
+ };
40
+ readonly executed_steps: {
41
+ readonly type: "array";
42
+ readonly items: {
43
+ readonly type: "string";
44
+ };
45
+ };
46
+ readonly expected: {
47
+ readonly type: "string";
48
+ };
49
+ readonly observed: {
50
+ readonly type: "string";
51
+ };
52
+ readonly failure_reason: {
53
+ readonly type: readonly ["string", "null"];
54
+ };
55
+ readonly blocked_reason: {
56
+ readonly type: readonly ["string", "null"];
57
+ };
58
+ readonly confidence: {
59
+ readonly type: "string";
60
+ readonly enum: readonly ["high", "medium", "low"];
61
+ };
62
+ readonly evidence: {
63
+ readonly type: "array";
64
+ readonly items: {
65
+ readonly type: "string";
66
+ };
67
+ };
68
+ };
69
+ readonly required: readonly ["status", "case_id", "title", "summary", "executed_steps", "expected", "observed", "failure_reason", "blocked_reason", "confidence", "evidence"];
70
+ readonly additionalProperties: false;
71
+ };
72
+ export declare function parseCodexResult(raw: string): CodexCaseResult;
@@ -0,0 +1,48 @@
1
+ import { z } from "zod";
2
+ export const codexResultSchema = z.object({
3
+ status: z.enum(["passed", "failed", "blocked"]),
4
+ case_id: z.string(),
5
+ title: z.string(),
6
+ summary: z.string(),
7
+ executed_steps: z.array(z.string()),
8
+ expected: z.string(),
9
+ observed: z.string(),
10
+ failure_reason: z.string().nullable(),
11
+ blocked_reason: z.string().nullable(),
12
+ confidence: z.enum(["high", "medium", "low"]),
13
+ evidence: z.array(z.string()),
14
+ });
15
+ export const codexOutputJsonSchema = {
16
+ type: "object",
17
+ properties: {
18
+ status: { type: "string", enum: ["passed", "failed", "blocked"] },
19
+ case_id: { type: "string" },
20
+ title: { type: "string" },
21
+ summary: { type: "string" },
22
+ executed_steps: { type: "array", items: { type: "string" } },
23
+ expected: { type: "string" },
24
+ observed: { type: "string" },
25
+ failure_reason: { type: ["string", "null"] },
26
+ blocked_reason: { type: ["string", "null"] },
27
+ confidence: { type: "string", enum: ["high", "medium", "low"] },
28
+ evidence: { type: "array", items: { type: "string" } },
29
+ },
30
+ required: [
31
+ "status",
32
+ "case_id",
33
+ "title",
34
+ "summary",
35
+ "executed_steps",
36
+ "expected",
37
+ "observed",
38
+ "failure_reason",
39
+ "blocked_reason",
40
+ "confidence",
41
+ "evidence",
42
+ ],
43
+ additionalProperties: false,
44
+ };
45
+ export function parseCodexResult(raw) {
46
+ return codexResultSchema.parse(JSON.parse(raw));
47
+ }
48
+ //# sourceMappingURL=outputSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputSchema.js","sourceRoot":"","sources":["../../src/codex/outputSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE;QACjE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC3B,cAAc,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAC5D,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;QAC5C,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE;QAC5C,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE;QAC/D,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;KACvD;IACD,QAAQ,EAAE;QACR,QAAQ;QACR,SAAS;QACT,OAAO;QACP,SAAS;QACT,gBAAgB;QAChB,UAAU;QACV,UAAU;QACV,gBAAgB;QAChB,gBAAgB;QAChB,YAAY;QACZ,UAAU;KACX;IACD,oBAAoB,EAAE,KAAK;CACnB,CAAC;AAEX,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ShipPilotConfig } from "../config/schema.js";
2
+ import type { ResolvedCase } from "../cases/resolveEnv.js";
3
+ export type PromptRuntimeContext = {
4
+ simulatorId: string;
5
+ bundleId: string;
6
+ xcodeBuildMcp: string;
7
+ };
8
+ export declare function buildCodexPrompt(config: ShipPilotConfig, qaCase: ResolvedCase, runtime: PromptRuntimeContext): string;
@@ -0,0 +1,48 @@
1
+ function shellQuote(value) {
2
+ return `'${value.replace(/'/g, "'\\''")}'`;
3
+ }
4
+ export function buildCodexPrompt(config, qaCase, runtime) {
5
+ const projectRef = config.ios.project
6
+ ? `project ${config.ios.project}`
7
+ : `workspace ${config.ios.workspace}`;
8
+ const xcodeBuildMcpCommand = shellQuote(runtime.xcodeBuildMcp);
9
+ return [
10
+ "You are ShipPilot, an agentic QA runner for iOS simulator testing.",
11
+ "",
12
+ "Goal:",
13
+ `Execute QA case ${qaCase.id}: ${qaCase.title}.`,
14
+ "",
15
+ "Hard rules:",
16
+ "- Do not edit source files.",
17
+ "- Do not commit, branch, push, or open pull requests.",
18
+ "- Only inspect and operate the already checked-out app and simulator.",
19
+ "- Treat the expected outcome as a test assertion. If it is not met, return status failed.",
20
+ "- If setup, login, navigation, simulator control, or evidence collection prevents validation, return status blocked.",
21
+ "- Capture screenshots through the bundled XcodeBuildMCP command when useful and put evidence paths in the final JSON.",
22
+ "",
23
+ "Available simulator backend:",
24
+ `- Use this bundled XcodeBuildMCP command for UI automation: ${xcodeBuildMcpCommand}`,
25
+ `- App target: ${projectRef}, scheme ${config.ios.scheme}, simulator ${config.ios.simulator}.`,
26
+ `- The app is already built, installed, and launched with bundle id ${runtime.bundleId}.`,
27
+ `- Use this simulator id for all UI commands: ${runtime.simulatorId}.`,
28
+ "- Do not run simulator list unless a command fails because this simulator id is invalid.",
29
+ "- Useful commands include:",
30
+ ` ${xcodeBuildMcpCommand} simulator snapshot-ui --simulator-id ${runtime.simulatorId}`,
31
+ ` ${xcodeBuildMcpCommand} ui-automation tap --simulator-id ${runtime.simulatorId} --label <label>`,
32
+ ` ${xcodeBuildMcpCommand} ui-automation tap --simulator-id ${runtime.simulatorId} --x <x> --y <y>`,
33
+ ` ${xcodeBuildMcpCommand} ui-automation type-text --simulator-id ${runtime.simulatorId} --text <text>`,
34
+ ` ${xcodeBuildMcpCommand} simulator screenshot --simulator-id ${runtime.simulatorId} --return-format path`,
35
+ "",
36
+ "Credential handling:",
37
+ "- The QA case may reference environment placeholders such as ${TEST_EMAIL}.",
38
+ "- Do not print secret values. Read required values from environment variables only when you need to type them into the simulator.",
39
+ `- Required environment variables for this case: ${qaCase.required_env.join(", ") || "none"}.`,
40
+ "",
41
+ "QA case steps and expectations:",
42
+ qaCase.body,
43
+ "",
44
+ "Final response:",
45
+ "Return only JSON matching the provided schema.",
46
+ ].join("\n");
47
+ }
48
+ //# sourceMappingURL=promptBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptBuilder.js","sourceRoot":"","sources":["../../src/codex/promptBuilder.ts"],"names":[],"mappings":"AASA,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,MAAuB,EACvB,MAAoB,EACpB,OAA6B;IAE7B,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO;QACnC,CAAC,CAAC,WAAW,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;QACjC,CAAC,CAAC,aAAa,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;IACxC,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAE/D,OAAO;QACL,oEAAoE;QACpE,EAAE;QACF,OAAO;QACP,mBAAmB,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,GAAG;QAChD,EAAE;QACF,aAAa;QACb,6BAA6B;QAC7B,uDAAuD;QACvD,uEAAuE;QACvE,2FAA2F;QAC3F,sHAAsH;QACtH,uHAAuH;QACvH,EAAE;QACF,8BAA8B;QAC9B,+DAA+D,oBAAoB,EAAE;QACrF,iBAAiB,UAAU,YAAY,MAAM,CAAC,GAAG,CAAC,MAAM,eAAe,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG;QAC9F,sEAAsE,OAAO,CAAC,QAAQ,GAAG;QACzF,gDAAgD,OAAO,CAAC,WAAW,GAAG;QACtE,0FAA0F;QAC1F,4BAA4B;QAC5B,KAAK,oBAAoB,yCAAyC,OAAO,CAAC,WAAW,EAAE;QACvF,KAAK,oBAAoB,qCAAqC,OAAO,CAAC,WAAW,kBAAkB;QACnG,KAAK,oBAAoB,qCAAqC,OAAO,CAAC,WAAW,kBAAkB;QACnG,KAAK,oBAAoB,2CAA2C,OAAO,CAAC,WAAW,gBAAgB;QACvG,KAAK,oBAAoB,wCAAwC,OAAO,CAAC,WAAW,uBAAuB;QAC3G,EAAE;QACF,sBAAsB;QACtB,6EAA6E;QAC7E,mIAAmI;QACnI,mDAAmD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG;QAC9F,EAAE;QACF,iCAAiC;QACjC,MAAM,CAAC,IAAI;QACX,EAAE;QACF,iBAAiB;QACjB,gDAAgD;KACjD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ShipPilotConfig } from "../config/schema.js";
2
+ import type { ResolvedCase } from "../cases/resolveEnv.js";
3
+ import type { Redactor } from "../security/redact.js";
4
+ import { type CodexCaseResult } from "./outputSchema.js";
5
+ export type CaseRunRecord = {
6
+ result: CodexCaseResult;
7
+ rawFinalResponse: string;
8
+ startedAt: string;
9
+ completedAt: string;
10
+ };
11
+ export declare function runCaseWithSdk(config: ShipPilotConfig, qaCase: ResolvedCase, redactor: Redactor, cwd?: string, verbose?: boolean): Promise<CaseRunRecord>;
@@ -0,0 +1,396 @@
1
+ import { spawn } from "node:child_process";
2
+ import { copyFileSync, existsSync, mkdirSync } from "node:fs";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { Codex } from "@openai/codex-sdk";
6
+ import { prepareCodexAuth } from "../auth/prepareCodexHome.js";
7
+ import { bootArgs, buildArgs, getAppPathArgs, getBundleIdArgs, installArgs, launchArgs, resolveXcodeBuildMcpCommand, } from "../ios/xcodebuildmcp.js";
8
+ import { buildCodexPrompt } from "./promptBuilder.js";
9
+ import { codexOutputJsonSchema, parseCodexResult } from "./outputSchema.js";
10
+ function runProcess(command, args, options) {
11
+ return new Promise((resolve, reject) => {
12
+ if (options.verbose) {
13
+ console.log(`[shippilot] $ ${[command, ...args].join(" ")}`);
14
+ }
15
+ const child = spawn(command, args, {
16
+ cwd: options.cwd,
17
+ env: options.env,
18
+ stdio: ["ignore", "pipe", "pipe"],
19
+ });
20
+ let stdout = "";
21
+ let stderr = "";
22
+ let timedOut = false;
23
+ const timer = options.timeoutMs
24
+ ? setTimeout(() => {
25
+ timedOut = true;
26
+ child.kill("SIGTERM");
27
+ }, options.timeoutMs)
28
+ : undefined;
29
+ child.stdout.on("data", (chunk) => {
30
+ const text = chunk.toString("utf8");
31
+ stdout += text;
32
+ if (options.verbose)
33
+ process.stdout.write(options.redactor.redact(text));
34
+ });
35
+ child.stderr.on("data", (chunk) => {
36
+ const text = chunk.toString("utf8");
37
+ stderr += text;
38
+ if (options.verbose)
39
+ process.stderr.write(options.redactor.redact(text));
40
+ });
41
+ child.on("error", (error) => {
42
+ if (timer)
43
+ clearTimeout(timer);
44
+ reject(error);
45
+ });
46
+ child.on("close", (status) => {
47
+ if (timer)
48
+ clearTimeout(timer);
49
+ resolve({ status, stdout, stderr, timedOut });
50
+ });
51
+ });
52
+ }
53
+ function combinedOutput(result) {
54
+ return [result.stdout, result.stderr].filter(Boolean).join("\n");
55
+ }
56
+ function blockedRecord(qaCase, startedAt, summary, observed) {
57
+ return {
58
+ startedAt,
59
+ completedAt: new Date().toISOString(),
60
+ rawFinalResponse: "",
61
+ result: {
62
+ status: "blocked",
63
+ case_id: qaCase.id,
64
+ title: qaCase.title,
65
+ summary,
66
+ executed_steps: [summary],
67
+ expected: qaCase.body,
68
+ observed,
69
+ failure_reason: null,
70
+ blocked_reason: observed,
71
+ confidence: "high",
72
+ evidence: [],
73
+ },
74
+ };
75
+ }
76
+ function expandTilde(value) {
77
+ return value.startsWith("~/") ? path.join(os.homedir(), value.slice(2)) : value;
78
+ }
79
+ function parseJsonValue(output, keys) {
80
+ try {
81
+ const parsed = JSON.parse(output);
82
+ for (const key of keys) {
83
+ const value = parsed[key];
84
+ if (typeof value === "string" && value.length > 0)
85
+ return value;
86
+ }
87
+ }
88
+ catch {
89
+ return null;
90
+ }
91
+ return null;
92
+ }
93
+ function parseAppPath(output) {
94
+ const jsonValue = parseJsonValue(output, ["appPath", "app_path", "path"]);
95
+ if (jsonValue)
96
+ return expandTilde(jsonValue);
97
+ const matches = output.match(/(?:~\/|\/)[^\n"']+?\.app/g);
98
+ const match = matches?.at(-1);
99
+ return match ? expandTilde(match.trim()) : null;
100
+ }
101
+ function parseBundleId(output) {
102
+ const jsonValue = parseJsonValue(output, ["bundleId", "bundle_id", "bundleIdentifier"]);
103
+ if (jsonValue)
104
+ return jsonValue;
105
+ const matches = output.match(/[A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)+/g);
106
+ return matches?.at(-1) ?? null;
107
+ }
108
+ function sanitizeFilePart(value) {
109
+ return value.replace(/[^A-Za-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "") || "case";
110
+ }
111
+ function collectEvidenceFiles(config, parsed, cwd) {
112
+ if (!config.reports.screenshots)
113
+ return parsed;
114
+ const screenshotsDir = path.resolve(cwd, config.reports.output_dir, "screenshots");
115
+ mkdirSync(screenshotsDir, { recursive: true });
116
+ const evidence = parsed.evidence.map((item, index) => {
117
+ if (!path.isAbsolute(item) || !existsSync(item))
118
+ return item;
119
+ const extension = path.extname(item) || ".png";
120
+ const fileName = `${sanitizeFilePart(parsed.case_id)}-${index + 1}${extension}`;
121
+ const destination = path.join(screenshotsDir, fileName);
122
+ copyFileSync(item, destination);
123
+ return path.relative(cwd, destination);
124
+ });
125
+ return { ...parsed, evidence };
126
+ }
127
+ function escapeRegExp(value) {
128
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
129
+ }
130
+ function parseSimulatorId(output, simulatorName) {
131
+ const escapedName = escapeRegExp(simulatorName);
132
+ const match = output.match(new RegExp(`-\\s*${escapedName}\\s*\\(([A-Fa-f0-9-]{36})\\)`));
133
+ if (match?.[1])
134
+ return match[1];
135
+ const lines = output.split(/\r?\n/);
136
+ for (let index = 0; index < lines.length; index += 1) {
137
+ if (!lines[index].includes(simulatorName))
138
+ continue;
139
+ const sameLine = lines[index].match(/([A-Fa-f0-9-]{36})/);
140
+ if (sameLine?.[1])
141
+ return sameLine[1];
142
+ for (const nextLine of lines.slice(index + 1, index + 4)) {
143
+ const udidLine = nextLine.match(/UDID:\s*([A-Fa-f0-9-]{36})/);
144
+ if (udidLine?.[1])
145
+ return udidLine[1];
146
+ }
147
+ }
148
+ return null;
149
+ }
150
+ function logCodexEvent(event, redactor) {
151
+ const typed = event;
152
+ if (typed.type === "item.started" && typed.item) {
153
+ if (typed.item.type === "command_execution") {
154
+ console.log(`[shippilot:agent] command started: ${typed.item.command ?? ""}`);
155
+ return;
156
+ }
157
+ if (typed.item.type === "mcp_tool_call") {
158
+ console.log(`[shippilot:agent] tool started: ${typed.item.server ?? "mcp"}.${typed.item.tool ?? ""}`);
159
+ return;
160
+ }
161
+ console.log(`[shippilot:agent] ${typed.item.type ?? "item"} started`);
162
+ return;
163
+ }
164
+ if (typed.type === "item.completed" && typed.item) {
165
+ if (typed.item.type === "reasoning" && typed.item.text) {
166
+ console.log(`[shippilot:agent] reasoning summary: ${redactor.redact(typed.item.text)}`);
167
+ return;
168
+ }
169
+ if (typed.item.type === "agent_message" && typed.item.text) {
170
+ console.log(`[shippilot:agent] message: ${redactor.redact(typed.item.text)}`);
171
+ return;
172
+ }
173
+ if (typed.item.type === "command_execution") {
174
+ console.log(`[shippilot:agent] command ${typed.item.status ?? "completed"} exit=${typed.item.exit_code ?? "n/a"}: ${typed.item.command ?? ""}`);
175
+ if (typed.item.aggregated_output) {
176
+ console.log(redactor.redact(typed.item.aggregated_output));
177
+ }
178
+ return;
179
+ }
180
+ if (typed.item.type === "mcp_tool_call") {
181
+ const suffix = typed.item.error?.message ? ` error=${typed.item.error.message}` : "";
182
+ console.log(`[shippilot:agent] tool ${typed.item.status ?? "completed"}: ${typed.item.server ?? "mcp"}.${typed.item.tool ?? ""}${suffix}`);
183
+ return;
184
+ }
185
+ console.log(`[shippilot:agent] ${typed.item.type ?? "item"} completed`);
186
+ return;
187
+ }
188
+ if (typed.type === "turn.completed") {
189
+ const usage = typed.usage;
190
+ console.log(`[shippilot:agent] turn completed input=${usage?.input_tokens ?? "n/a"} output=${usage?.output_tokens ?? "n/a"} reasoning=${usage?.reasoning_output_tokens ?? "n/a"}`);
191
+ return;
192
+ }
193
+ if (typed.type === "turn.failed" || typed.type === "error") {
194
+ console.log(`[shippilot:agent] error: ${typed.error?.message ?? typed.message ?? "unknown"}`);
195
+ }
196
+ }
197
+ export async function runCaseWithSdk(config, qaCase, redactor, cwd = process.cwd(), verbose = config.codex.verbose) {
198
+ mkdirSync(path.resolve(cwd, config.reports.output_dir), { recursive: true });
199
+ const startedAt = new Date().toISOString();
200
+ const xcodeBuildMcp = resolveXcodeBuildMcpCommand();
201
+ const simulatorList = await runProcess(xcodeBuildMcp, ["simulator", "list"], {
202
+ cwd,
203
+ env: process.env,
204
+ verbose,
205
+ redactor,
206
+ timeoutMs: 60 * 1000,
207
+ });
208
+ const simulatorId = parseSimulatorId(combinedOutput(simulatorList), config.ios.simulator);
209
+ if (simulatorList.status !== 0 || !simulatorId) {
210
+ const detail = redactor.redact(simulatorList.timedOut
211
+ ? "Timed out while resolving the simulator id."
212
+ : combinedOutput(simulatorList) || `Could not find simulator named ${config.ios.simulator}.`);
213
+ return blockedRecord(qaCase, startedAt, "The simulator id could not be resolved.", detail);
214
+ }
215
+ const boot = await runProcess(xcodeBuildMcp, bootArgs(config, simulatorId), {
216
+ cwd,
217
+ env: process.env,
218
+ verbose,
219
+ redactor,
220
+ timeoutMs: 3 * 60 * 1000,
221
+ });
222
+ if (boot.status !== 0) {
223
+ const detail = redactor.redact(boot.timedOut ? "Timed out while booting the simulator." : combinedOutput(boot) || "Unknown simulator boot error");
224
+ return blockedRecord(qaCase, startedAt, "The simulator could not be booted before QA execution.", detail);
225
+ }
226
+ const bootStatus = await runProcess("xcrun", ["simctl", "bootstatus", simulatorId, "-b"], {
227
+ cwd,
228
+ env: process.env,
229
+ verbose,
230
+ redactor,
231
+ timeoutMs: 3 * 60 * 1000,
232
+ });
233
+ if (bootStatus.status !== 0) {
234
+ const detail = redactor.redact(bootStatus.timedOut
235
+ ? "Timed out while waiting for the simulator to finish booting."
236
+ : combinedOutput(bootStatus) || "Unknown simulator bootstatus error");
237
+ return blockedRecord(qaCase, startedAt, "The simulator did not finish booting before QA execution.", detail);
238
+ }
239
+ const build = await runProcess(xcodeBuildMcp, buildArgs(config, simulatorId), {
240
+ cwd,
241
+ env: process.env,
242
+ verbose,
243
+ redactor,
244
+ timeoutMs: 20 * 60 * 1000,
245
+ });
246
+ if (build.status !== 0) {
247
+ const detail = redactor.redact(build.timedOut ? "Timed out while building the app." : combinedOutput(build) || "Unknown build error");
248
+ return blockedRecord(qaCase, startedAt, "The app could not be built before QA execution.", detail);
249
+ }
250
+ const appPathResult = await runProcess(xcodeBuildMcp, getAppPathArgs(config, simulatorId), {
251
+ cwd,
252
+ env: process.env,
253
+ verbose,
254
+ redactor,
255
+ timeoutMs: 2 * 60 * 1000,
256
+ });
257
+ const appPath = parseAppPath(combinedOutput(appPathResult));
258
+ if (appPathResult.status !== 0 || !appPath) {
259
+ const detail = redactor.redact(appPathResult.timedOut
260
+ ? "Timed out while resolving the app path."
261
+ : combinedOutput(appPathResult) || "Could not parse app path.");
262
+ return blockedRecord(qaCase, startedAt, "The built app path could not be resolved.", detail);
263
+ }
264
+ const install = await runProcess(xcodeBuildMcp, installArgs(config, appPath, simulatorId), {
265
+ cwd,
266
+ env: process.env,
267
+ verbose,
268
+ redactor,
269
+ timeoutMs: 5 * 60 * 1000,
270
+ });
271
+ if (install.status !== 0) {
272
+ const detail = redactor.redact(install.timedOut ? "Timed out while installing the app." : combinedOutput(install) || "Unknown install error");
273
+ return blockedRecord(qaCase, startedAt, "The app could not be installed before QA execution.", detail);
274
+ }
275
+ let bundleId = config.ios.bundle_id ?? null;
276
+ if (!bundleId) {
277
+ const bundle = await runProcess(xcodeBuildMcp, getBundleIdArgs(appPath), {
278
+ cwd,
279
+ env: process.env,
280
+ verbose,
281
+ redactor,
282
+ timeoutMs: 60 * 1000,
283
+ });
284
+ bundleId = parseBundleId(combinedOutput(bundle));
285
+ if (bundle.status !== 0 || !bundleId) {
286
+ const detail = redactor.redact(bundle.timedOut
287
+ ? "Timed out while resolving the bundle id."
288
+ : combinedOutput(bundle) || "Could not parse bundle id.");
289
+ return blockedRecord(qaCase, startedAt, "The app bundle id could not be resolved.", detail);
290
+ }
291
+ }
292
+ const launch = await runProcess(xcodeBuildMcp, launchArgs(config, bundleId, simulatorId), {
293
+ cwd,
294
+ env: process.env,
295
+ verbose,
296
+ redactor,
297
+ timeoutMs: 2 * 60 * 1000,
298
+ });
299
+ if (launch.status !== 0) {
300
+ if (launch.timedOut) {
301
+ const fallbackLaunch = await runProcess("xcrun", ["simctl", "launch", simulatorId, bundleId], {
302
+ cwd,
303
+ env: process.env,
304
+ verbose,
305
+ redactor,
306
+ timeoutMs: 2 * 60 * 1000,
307
+ });
308
+ if (fallbackLaunch.status === 0) {
309
+ console.log("[shippilot] xcodebuildmcp launch timed out; continued after successful simctl launch fallback.");
310
+ }
311
+ else {
312
+ const fallbackDetail = redactor.redact(fallbackLaunch.timedOut
313
+ ? "Timed out while launching the app with xcodebuildmcp and simctl fallback."
314
+ : combinedOutput(fallbackLaunch) || combinedOutput(launch) || "Unknown launch error");
315
+ return blockedRecord(qaCase, startedAt, "The app could not be launched before QA execution.", fallbackDetail);
316
+ }
317
+ }
318
+ else {
319
+ const detail = redactor.redact(combinedOutput(launch) || "Unknown launch error");
320
+ return blockedRecord(qaCase, startedAt, "The app could not be launched before QA execution.", detail);
321
+ }
322
+ }
323
+ const preparedAuth = prepareCodexAuth(config);
324
+ try {
325
+ const codex = new Codex({
326
+ apiKey: preparedAuth.apiKey,
327
+ env: preparedAuth.env,
328
+ config: {
329
+ sandbox_workspace_write: { network_access: false },
330
+ },
331
+ });
332
+ const thread = codex.startThread({
333
+ workingDirectory: cwd,
334
+ skipGitRepoCheck: true,
335
+ sandboxMode: config.codex.sandbox,
336
+ approvalPolicy: "never",
337
+ ...(config.codex.model === "default" ? {} : { model: config.codex.model }),
338
+ });
339
+ const prompt = buildCodexPrompt(config, qaCase, { simulatorId, bundleId, xcodeBuildMcp });
340
+ let rawResponse;
341
+ if (verbose) {
342
+ console.log("[shippilot] Starting Codex SDK streamed run");
343
+ const { events } = await thread.runStreamed(prompt, {
344
+ outputSchema: codexOutputJsonSchema,
345
+ });
346
+ let finalResponse = "";
347
+ for await (const event of events) {
348
+ logCodexEvent(event, redactor);
349
+ if (event.type === "item.completed" &&
350
+ event.item.type === "agent_message" &&
351
+ typeof event.item.text === "string") {
352
+ finalResponse = event.item.text;
353
+ }
354
+ }
355
+ rawResponse = finalResponse;
356
+ }
357
+ else {
358
+ const turn = await thread.run(prompt, {
359
+ outputSchema: codexOutputJsonSchema,
360
+ });
361
+ rawResponse = turn.finalResponse;
362
+ }
363
+ const rawFinalResponse = redactor.redact(rawResponse);
364
+ let parsed;
365
+ try {
366
+ parsed = parseCodexResult(rawResponse);
367
+ parsed = JSON.parse(redactor.redact(JSON.stringify(parsed)));
368
+ parsed = collectEvidenceFiles(config, parsed, cwd);
369
+ }
370
+ catch (error) {
371
+ parsed = {
372
+ status: "blocked",
373
+ case_id: qaCase.id,
374
+ title: qaCase.title,
375
+ summary: "Codex returned malformed structured output.",
376
+ executed_steps: [],
377
+ expected: qaCase.body,
378
+ observed: rawFinalResponse,
379
+ failure_reason: null,
380
+ blocked_reason: error instanceof Error ? error.message : "Malformed Codex output",
381
+ confidence: "high",
382
+ evidence: [],
383
+ };
384
+ }
385
+ return {
386
+ startedAt,
387
+ completedAt: new Date().toISOString(),
388
+ rawFinalResponse,
389
+ result: parsed,
390
+ };
391
+ }
392
+ finally {
393
+ preparedAuth.cleanup();
394
+ }
395
+ }
396
+ //# sourceMappingURL=runWithSdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runWithSdk.js","sourceRoot":"","sources":["../../src/codex/runWithSdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { type ShipPilotConfig } from "./schema.js";
2
+ export declare function loadConfig(configPath?: string, cwd?: string): ShipPilotConfig;