@pome-sh/cli 0.45.1 → 0.46.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.
- package/assets/dashboard/app.css +3 -0
- package/assets/dashboard/app.js +9 -0
- package/assets/dashboard/index.html +15 -0
- package/dist/build-info.json +3 -3
- package/dist/{checks-RDU56OGI.js → checks-FMIUVJ73.js} +2 -2
- package/dist/{twinTape-5P3HQ27N.js → chunk-4EPQF6CR.js} +261 -31
- package/dist/{chunk-IZFM7W2V.js → chunk-GBMPR32X.js} +34 -10
- package/dist/{chunk-DX2KCFJM.js → chunk-GTLGXFLQ.js} +1 -1
- package/dist/{chunk-HEEFOMSZ.js → chunk-J5IF4T3C.js} +7 -4
- package/dist/{chunk-BXYPNEJY.js → chunk-LDDR6XRN.js} +45 -22
- package/dist/{chunk-EZYVICDB.js → chunk-QO6QJ6MN.js} +3 -1
- package/dist/chunk-TG6GFWA3.js +48 -0
- package/dist/{runTrialGroup-MMTTTDWY.js → runTrialGroup-FZWKPVI5.js} +6 -6
- package/dist/src/cli/main.js +121 -154
- package/dist/{src-STAXYPD3.js → src-F5FHPGJP.js} +1 -1
- package/dist/{src-46YGR2WY.js → src-L54OSFDK.js} +1 -1
- package/dist/{src-LPTWNBO5.js → src-LYV6LLKW.js} +1 -1
- package/dist/{src-D3PKLT54.js → src-MRJ73S46.js} +1 -1
- package/dist/{src-CV7QDV5E.js → src-PQ35TNOF.js} +1 -1
- package/dist/twinHarness-VEIXQJ4Y.js +6 -0
- package/dist/{twinSeed-ZFZO7BL7.js → twinSeed-LDKR3NPY.js} +1 -1
- package/dist/{twinStart-XN3BYOUF.js → twinStart-44W63TRH.js} +379 -93
- package/dist/twinTape-433A4IC4.js +10 -0
- package/package.json +2 -1
- package/dist/chunk-AGZOWSLG.js +0 -142
- package/dist/twinHarness-I2JGKQYD.js +0 -6
- package/dist/{run-WONFTZS3.js → run-CFA4LZWQ.js} +1 -1
|
@@ -29,20 +29,24 @@ var TWIN_REGISTRY = {
|
|
|
29
29
|
github: {
|
|
30
30
|
envName: "GITHUB",
|
|
31
31
|
defaultPort: 3333,
|
|
32
|
+
dbEnvName: "GITHUB_CLONE_DB",
|
|
33
|
+
noSeedEnvName: "GITHUB_CLONE_NO_SEED",
|
|
32
34
|
version: package_default.version,
|
|
33
35
|
defaultSeed: async () => (await import('./seed-BHJKPKUC.js')).defaultSeedState(),
|
|
34
36
|
parseSeed: async (input) => (await import('./seed-BHJKPKUC.js')).parseSeed(input),
|
|
35
37
|
seedFields: async () => Object.keys((await import('./seed-BHJKPKUC.js')).seedSchema.shape),
|
|
36
|
-
async boot({ seedState, runId, recorder }) {
|
|
38
|
+
async boot({ seedState, runId, recorder, dbPath, noSeed }) {
|
|
37
39
|
const {
|
|
38
40
|
createGitHubCloneApp,
|
|
39
41
|
defaultSeedState,
|
|
40
42
|
GitHubDomain,
|
|
41
43
|
openGitHubCloneDatabase
|
|
42
|
-
} = await import('./src-
|
|
43
|
-
const db = openGitHubCloneDatabase();
|
|
44
|
+
} = await import('./src-L54OSFDK.js');
|
|
45
|
+
const db = openGitHubCloneDatabase(dbPath ?? ":memory:");
|
|
44
46
|
const domain = new GitHubDomain(db);
|
|
45
|
-
|
|
47
|
+
if (!noSeed) {
|
|
48
|
+
domain.seed(seedState === void 0 ? defaultSeedState() : seedState);
|
|
49
|
+
}
|
|
46
50
|
const app = await createGitHubCloneApp({
|
|
47
51
|
db,
|
|
48
52
|
recorder,
|
|
@@ -58,15 +62,17 @@ var TWIN_REGISTRY = {
|
|
|
58
62
|
slack: {
|
|
59
63
|
envName: "SLACK",
|
|
60
64
|
defaultPort: 3333,
|
|
65
|
+
dbEnvName: "SLACK_CLONE_DB",
|
|
66
|
+
noSeedEnvName: "SLACK_CLONE_NO_SEED",
|
|
61
67
|
version: package_default2.version,
|
|
62
68
|
defaultSeed: async () => (await import('./seed-SYJXLGWF.js')).defaultSeedState(),
|
|
63
69
|
parseSeed: async (input) => (await import('./seed-SYJXLGWF.js')).parseSeed(input),
|
|
64
70
|
seedFields: async () => Object.keys((await import('./seed-SYJXLGWF.js')).seedSchema.shape),
|
|
65
|
-
async boot({ seedState, runId, recorder }) {
|
|
66
|
-
const { createSlackTwinApp, openSlackTwinDatabase, SlackDomain } = await import('./src-
|
|
67
|
-
const db = openSlackTwinDatabase(":memory:");
|
|
71
|
+
async boot({ seedState, runId, recorder, dbPath, noSeed }) {
|
|
72
|
+
const { createSlackTwinApp, openSlackTwinDatabase, SlackDomain } = await import('./src-LYV6LLKW.js');
|
|
73
|
+
const db = openSlackTwinDatabase(dbPath ?? ":memory:");
|
|
68
74
|
const domain = new SlackDomain(db);
|
|
69
|
-
domain.applySeed(seedState);
|
|
75
|
+
if (!noSeed) domain.applySeed(seedState);
|
|
70
76
|
const app = createSlackTwinApp({
|
|
71
77
|
db,
|
|
72
78
|
domain,
|
|
@@ -85,12 +91,14 @@ var TWIN_REGISTRY = {
|
|
|
85
91
|
stripe: {
|
|
86
92
|
envName: "STRIPE",
|
|
87
93
|
defaultPort: 3333,
|
|
94
|
+
dbEnvName: "STRIPE_CLONE_DB",
|
|
95
|
+
noSeedEnvName: "STRIPE_CLONE_NO_SEED",
|
|
88
96
|
version: package_default3.version,
|
|
89
97
|
defaultSeed: async () => (await import('./seed-E6SA4NKZ.js')).defaultSeed(),
|
|
90
98
|
parseSeed: async (input) => (await import('./seed-E6SA4NKZ.js')).parseSeed(input),
|
|
91
99
|
seedFields: async () => Object.keys((await import('./seed-E6SA4NKZ.js')).seedSchema.shape),
|
|
92
|
-
async boot({ seedState, runId, recorder, twinBaseUrl }) {
|
|
93
|
-
const stripeTwin = await import('./src-
|
|
100
|
+
async boot({ seedState, runId, recorder, twinBaseUrl, dbPath, noSeed }) {
|
|
101
|
+
const stripeTwin = await import('./src-F5FHPGJP.js');
|
|
94
102
|
const { createApp } = await import('./server-GECKG2H6.js');
|
|
95
103
|
const {
|
|
96
104
|
applySeed: applyStripeSeed,
|
|
@@ -99,7 +107,7 @@ var TWIN_REGISTRY = {
|
|
|
99
107
|
parseSeed: parseStripeSeed,
|
|
100
108
|
StripeDomain
|
|
101
109
|
} = stripeTwin;
|
|
102
|
-
const db = openTwinStripeDatabase(":memory:");
|
|
110
|
+
const db = openTwinStripeDatabase(dbPath ?? ":memory:");
|
|
103
111
|
const domain = new StripeDomain(db);
|
|
104
112
|
const seed = parseStripeSeed(seedState);
|
|
105
113
|
const baseUrl = twinBaseUrl ?? "http://127.0.0.1:3333";
|
|
@@ -108,9 +116,9 @@ var TWIN_REGISTRY = {
|
|
|
108
116
|
db,
|
|
109
117
|
recorder,
|
|
110
118
|
runId,
|
|
111
|
-
seed
|
|
119
|
+
seed: noSeed ? void 0 : seed
|
|
112
120
|
}) : (() => {
|
|
113
|
-
applyStripeSeed(db, seed);
|
|
121
|
+
if (!noSeed) applyStripeSeed(db, seed);
|
|
114
122
|
return createTwinStripeApp({
|
|
115
123
|
db,
|
|
116
124
|
recorder,
|
|
@@ -130,17 +138,24 @@ var TWIN_REGISTRY = {
|
|
|
130
138
|
envName: "GMAIL",
|
|
131
139
|
defaultPort: 3336,
|
|
132
140
|
portEnvName: "GMAIL_TWIN_PORT",
|
|
141
|
+
dbEnvName: "GMAIL_TWIN_DB",
|
|
142
|
+
noSeedEnvName: "GMAIL_TWIN_NO_SEED",
|
|
133
143
|
tokenEnvName: "POME_GMAIL_TOKEN",
|
|
134
144
|
version: package_default4.version,
|
|
135
145
|
defaultSeed: async () => (await import('./seed-W3R53GHH.js')).defaultSeedState(),
|
|
136
146
|
parseSeed: async (input) => (await import('./seed-W3R53GHH.js')).parseSeed(input),
|
|
137
147
|
seedFields: async () => Object.keys((await import('./seed-W3R53GHH.js')).gmailSeedSchema.shape),
|
|
138
|
-
async boot({ seedState, runId, recorder }) {
|
|
139
|
-
const { createGmailTwinApp, GmailDomain, openGmailTwinDatabase, parseSeed } = await import('./src-
|
|
140
|
-
const db = openGmailTwinDatabase(":memory:");
|
|
148
|
+
async boot({ seedState, runId, recorder, dbPath, noSeed }) {
|
|
149
|
+
const { createGmailTwinApp, GmailDomain, openGmailTwinDatabase, parseSeed } = await import('./src-PQ35TNOF.js');
|
|
150
|
+
const db = openGmailTwinDatabase(dbPath ?? ":memory:");
|
|
141
151
|
const seed = parseSeed(seedState);
|
|
142
152
|
const domain = new GmailDomain(db);
|
|
143
|
-
const app = createGmailTwinApp({
|
|
153
|
+
const app = createGmailTwinApp({
|
|
154
|
+
db,
|
|
155
|
+
seed: noSeed ? void 0 : seed,
|
|
156
|
+
recorder,
|
|
157
|
+
runId
|
|
158
|
+
});
|
|
144
159
|
return {
|
|
145
160
|
app,
|
|
146
161
|
exportState: () => domain.exportState(),
|
|
@@ -153,23 +168,31 @@ var TWIN_REGISTRY = {
|
|
|
153
168
|
envName: "LINEAR",
|
|
154
169
|
defaultPort: 3337,
|
|
155
170
|
portEnvName: "LINEAR_TWIN_PORT",
|
|
171
|
+
dbEnvName: "LINEAR_TWIN_DB",
|
|
172
|
+
noSeedEnvName: "LINEAR_TWIN_NO_SEED",
|
|
156
173
|
tokenEnvName: "POME_LINEAR_TOKEN",
|
|
157
174
|
version: package_default5.version,
|
|
158
175
|
defaultSeed: async () => (await import('./seed-5HQC3FVZ.js')).defaultSeedState(),
|
|
159
176
|
parseSeed: async (input) => (await import('./seed-5HQC3FVZ.js')).parseSeed(input),
|
|
160
177
|
seedFields: async () => Object.keys((await import('./seed-5HQC3FVZ.js')).linearSeedSchema.shape),
|
|
161
|
-
async boot({ seedState, runId, recorder }) {
|
|
178
|
+
async boot({ seedState, runId, recorder, dbPath, noSeed }) {
|
|
162
179
|
const {
|
|
163
180
|
createLinearTwinApp,
|
|
164
181
|
DEFAULT_LINEAR_EMAIL,
|
|
165
182
|
LinearDomain,
|
|
166
183
|
openLinearTwinDatabase,
|
|
167
184
|
parseSeed
|
|
168
|
-
} = await import('./src-
|
|
169
|
-
const db = openLinearTwinDatabase(":memory:");
|
|
185
|
+
} = await import('./src-MRJ73S46.js');
|
|
186
|
+
const db = openLinearTwinDatabase(dbPath ?? ":memory:");
|
|
170
187
|
const seed = parseSeed(seedState);
|
|
171
188
|
const domain = new LinearDomain(db);
|
|
172
|
-
const app = createLinearTwinApp({
|
|
189
|
+
const app = createLinearTwinApp({
|
|
190
|
+
db,
|
|
191
|
+
seed,
|
|
192
|
+
noSeed,
|
|
193
|
+
recorder,
|
|
194
|
+
runId
|
|
195
|
+
});
|
|
173
196
|
const primaryEmail = seed.users.find((user) => user.admin)?.email ?? seed.users[0]?.email ?? DEFAULT_LINEAR_EMAIL;
|
|
174
197
|
return {
|
|
175
198
|
app,
|
|
@@ -181,7 +204,7 @@ var TWIN_REGISTRY = {
|
|
|
181
204
|
}
|
|
182
205
|
};
|
|
183
206
|
async function createGitHubSmokeApp() {
|
|
184
|
-
const { createGitHubCloneApp } = await import('./src-
|
|
207
|
+
const { createGitHubCloneApp } = await import('./src-L54OSFDK.js');
|
|
185
208
|
return createGitHubCloneApp();
|
|
186
209
|
}
|
|
187
210
|
function defaultPortFor(twin, env = process.env) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-
|
|
1
|
+
import { TWIN_NAMES, isTwinName, TWIN_REGISTRY } from './chunk-LDDR6XRN.js';
|
|
2
2
|
import { createFileBackedRecorderStore, createRecorderStore } from './chunk-TWURH7YM.js';
|
|
3
3
|
|
|
4
4
|
// src/recorder/recorder.ts
|
|
@@ -36,6 +36,8 @@ async function bootTwin(opts) {
|
|
|
36
36
|
seedState: opts.seedState,
|
|
37
37
|
runId: opts.runId,
|
|
38
38
|
twinBaseUrl: opts.twinBaseUrl,
|
|
39
|
+
dbPath: opts.dbPath,
|
|
40
|
+
noSeed: opts.noSeed,
|
|
39
41
|
recorder
|
|
40
42
|
});
|
|
41
43
|
return {
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { dirname, join, resolve } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
|
|
6
|
+
// src/cli/open-browser.ts
|
|
7
|
+
async function openBrowser(url) {
|
|
8
|
+
const command = process.platform === "darwin" ? "open" : process.platform === "win32" ? "powershell.exe" : "xdg-open";
|
|
9
|
+
const args = process.platform === "win32" ? ["-NoProfile", "-Command", "Start-Process", url] : [url];
|
|
10
|
+
await new Promise((resolve2) => {
|
|
11
|
+
const failed = () => {
|
|
12
|
+
console.error("Could not open a browser automatically \u2014 copy the URL above into a browser.");
|
|
13
|
+
resolve2();
|
|
14
|
+
};
|
|
15
|
+
try {
|
|
16
|
+
execFile(command, args, (error) => error ? failed() : resolve2());
|
|
17
|
+
} catch {
|
|
18
|
+
failed();
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function resolvePackageRoot(importMetaUrl) {
|
|
23
|
+
let dir = dirname(fileURLToPath(importMetaUrl));
|
|
24
|
+
for (let i = 0; i < 6; i++) {
|
|
25
|
+
if (existsSync(join(dir, "package.json"))) return dir;
|
|
26
|
+
const parent = resolve(dir, "..");
|
|
27
|
+
if (parent === dir) break;
|
|
28
|
+
dir = parent;
|
|
29
|
+
}
|
|
30
|
+
return void 0;
|
|
31
|
+
}
|
|
32
|
+
function assetPath(...segments) {
|
|
33
|
+
const root = resolvePackageRoot(import.meta.url);
|
|
34
|
+
if (!root) {
|
|
35
|
+
throw new Error(
|
|
36
|
+
`Could not locate the @pome-sh/cli package root (no enclosing package.json) while resolving the packaged asset ${segments.join("/")}.`
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
const candidate = join(root, "assets", ...segments);
|
|
40
|
+
if (!existsSync(candidate)) {
|
|
41
|
+
throw new Error(
|
|
42
|
+
`Packaged asset not found at ${candidate}. This is a packaging bug \u2014 \`assets/\` must be listed in cli/package.json \`files\`.`
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
return candidate;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export { assetPath, openBrowser, resolvePackageRoot };
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { runTaskHosted, createHostedClient, parseTaskFile, resolveRunAgentIdentity, outcomeOf, isNarrated, criterionPhrase, narratorReadingLines } from './chunk-
|
|
2
|
-
import './chunk-4LQ4IJOC.js';
|
|
1
|
+
import { runTaskHosted, createHostedClient, parseTaskFile, resolveRunAgentIdentity, outcomeOf, isNarrated, criterionPhrase, narratorReadingLines } from './chunk-J5IF4T3C.js';
|
|
3
2
|
import { HostedQuotaError, HostedTrialError } from './chunk-26UAPLHK.js';
|
|
4
|
-
import './chunk-M7ATJ423.js';
|
|
5
|
-
import './chunk-NW7HGA2K.js';
|
|
6
3
|
import './chunk-PASFBRK4.js';
|
|
7
4
|
import './chunk-3FZY376K.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
5
|
+
import './chunk-GTLGXFLQ.js';
|
|
6
|
+
import './chunk-NW7HGA2K.js';
|
|
7
|
+
import './chunk-4LQ4IJOC.js';
|
|
8
|
+
import './chunk-M7ATJ423.js';
|
|
9
|
+
import './chunk-LDDR6XRN.js';
|
|
10
10
|
import './chunk-NBOQN5VX.js';
|
|
11
11
|
import './chunk-YBWG5JK2.js';
|
|
12
12
|
import './chunk-TWURH7YM.js';
|