@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.
@@ -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-46YGR2WY.js');
43
- const db = openGitHubCloneDatabase();
44
+ } = await import('./src-L54OSFDK.js');
45
+ const db = openGitHubCloneDatabase(dbPath ?? ":memory:");
44
46
  const domain = new GitHubDomain(db);
45
- domain.seed(seedState === void 0 ? defaultSeedState() : seedState);
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-LPTWNBO5.js');
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-STAXYPD3.js');
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-CV7QDV5E.js');
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({ db, seed, recorder, runId });
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-D3PKLT54.js');
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({ db, seed, recorder, runId });
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-46YGR2WY.js');
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-BXYPNEJY.js';
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-HEEFOMSZ.js';
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-DX2KCFJM.js';
9
- import './chunk-BXYPNEJY.js';
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';