@pome-sh/cli 0.35.3 → 0.36.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.
Files changed (40) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/{checks-TC6O2HZE.js → checks-BKMTBJSO.js} +7 -3
  3. package/dist/chunk-2K6BJ3PI.js +140 -0
  4. package/dist/{chunk-Q5NBPR57.js → chunk-3FZY376K.js} +9 -1
  5. package/dist/{chunk-T73VMABH.js → chunk-5NPGY73F.js} +2 -2
  6. package/dist/{chunk-4EPOCS3X.js → chunk-77EGSHLT.js} +4 -4
  7. package/dist/{chunk-NAU4UZOE.js → chunk-AEFXTGW3.js} +2 -2
  8. package/dist/{chunk-D3NCOYBV.js → chunk-BS47AE55.js} +24 -50
  9. package/dist/{chunk-L7XARKMM.js → chunk-DFOQGAKS.js} +1 -1
  10. package/dist/{chunk-CF6EIU2U.js → chunk-FBSA5L36.js} +1 -1
  11. package/dist/{chunk-VOHTQV4J.js → chunk-HRAD7MRX.js} +1 -1
  12. package/dist/{chunk-HJX25USP.js → chunk-NBOQN5VX.js} +51 -18
  13. package/dist/{chunk-533VIN3J.js → chunk-NNXVR46L.js} +7 -150
  14. package/dist/{chunk-3T5XN64P.js → chunk-PASFBRK4.js} +9 -1
  15. package/dist/{chunk-CNG6DQWX.js → chunk-RPPF2KDQ.js} +22 -22
  16. package/dist/{chunk-DWOCTCSE.js → chunk-VPXIGCZW.js} +1 -1
  17. package/dist/{chunk-ZDS25NS5.js → chunk-YBWG5JK2.js} +17 -9
  18. package/dist/{runDemo-EBSKTX6V.js → runDemo-B2SXM4OC.js} +12 -10
  19. package/dist/{runTrialGroup-WZ3CUKYB.js → runTrialGroup-FZUMQLDH.js} +13 -11
  20. package/dist/{seed-F7RNI55S.js → seed-5HQC3FVZ.js} +1 -1
  21. package/dist/{seed-BG5HMSBM.js → seed-BHJKPKUC.js} +1 -1
  22. package/dist/seed-E6SA4NKZ.js +2 -0
  23. package/dist/{seed-IIMBJHAJ.js → seed-SYJXLGWF.js} +1 -1
  24. package/dist/{seed-NR6RUKXV.js → seed-W3R53GHH.js} +1 -1
  25. package/dist/{server-FBKFPGR4.js → server-GDK4TBTL.js} +2 -2
  26. package/dist/src/cli/main.js +24 -22
  27. package/dist/{src-5SOF4PDV.js → src-FUPOFZI4.js} +4 -4
  28. package/dist/{src-ANO374BX.js → src-SNSK5ENY.js} +4 -4
  29. package/dist/{src-DO3BEABU.js → src-UY4Y75BD.js} +48 -5
  30. package/dist/{src-AMLUIPYO.js → src-V3RUKDMQ.js} +396 -6
  31. package/dist/{src-YGMRIKFV.js → src-Z4C4SSDR.js} +4 -4
  32. package/dist/twinHarness-ATYQTDA5.js +6 -0
  33. package/dist/{twinSeed-2MRVMNIT.js → twinSeed-7M4GOIBS.js} +1 -1
  34. package/dist/{twinStart-2ZNLS3ON.js → twinStart-2LICNC4D.js} +5 -5
  35. package/package.json +1 -1
  36. package/tasks/19-stripe-rerefund-persuasion.md +5 -3
  37. package/tasks/19-stripe-rerefund-persuasion.seed.json +0 -1
  38. package/dist/chunk-SLTBPJKZ.js +0 -522
  39. package/dist/seed-YWDTT2WL.js +0 -2
  40. package/dist/twinHarness-2OFWSVPK.js +0 -6
@@ -1,4 +1,7 @@
1
+ import { seedSchema as seedSchema$2 } from './chunk-NBOQN5VX.js';
2
+ import { seedSchema } from './chunk-YBWG5JK2.js';
1
3
  import { twinIdSchema } from './chunk-6KJC4BTO.js';
4
+ import { seedSchema as seedSchema$1 } from './chunk-2K6BJ3PI.js';
2
5
  import { z } from 'zod';
3
6
 
4
7
  var SLUG_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
@@ -322,152 +325,6 @@ var sessionPublicSchema = sessionSchema.omit({
322
325
  pod_id: true,
323
326
  api_key_id: true
324
327
  });
325
- var githubSeedStateSchema = z.object({
326
- users: z.array(
327
- z.object({
328
- login: z.string().min(1),
329
- type: z.enum(["User", "Organization"]).default("User"),
330
- name: z.string().default("")
331
- })
332
- ).optional(),
333
- repositories: z.array(
334
- z.object({
335
- owner: z.string().min(1),
336
- name: z.string().min(1),
337
- description: z.string().optional(),
338
- default_branch: z.string().min(1).optional(),
339
- labels: z.array(
340
- z.object({
341
- name: z.string().min(1),
342
- color: z.string().default("ededed"),
343
- description: z.string().default("")
344
- })
345
- ).default([]),
346
- collaborators: z.array(z.string().min(1)).default([]),
347
- files: z.array(
348
- z.object({
349
- path: z.string().min(1),
350
- content: z.string(),
351
- branch: z.string().optional()
352
- })
353
- ).optional(),
354
- issues: z.array(
355
- z.object({
356
- number: z.number().int().positive(),
357
- title: z.string().min(1),
358
- body: z.string().default(""),
359
- state: z.enum(["open", "closed"]).default("open"),
360
- labels: z.array(z.string().min(1)).default([]),
361
- assignee: z.string().nullable().default(null)
362
- })
363
- ).default([]),
364
- pull_requests: z.array(
365
- z.object({
366
- number: z.number().int().positive().optional(),
367
- title: z.string().min(1),
368
- body: z.string().default(""),
369
- head: z.string().min(1),
370
- base: z.string().min(1).default("main"),
371
- state: z.enum(["open", "closed"]).default("open"),
372
- author: z.string().min(1).optional(),
373
- // Reviews seeded on this PR. State mirrors GitHub's review state
374
- // enum; author must exist in users or collaborators.
375
- reviews: z.array(
376
- z.object({
377
- author: z.string().min(1),
378
- state: z.enum(["APPROVED", "CHANGES_REQUESTED", "COMMENTED"]).default("APPROVED"),
379
- body: z.string().default("")
380
- })
381
- ).default([]),
382
- // Commit statuses on the PR head SHA, wired into commit_statuses
383
- // so get_pull_request_status and merge_pull_request see them.
384
- statuses: z.array(
385
- z.object({
386
- context: z.string().min(1).default("ci/build"),
387
- state: z.enum(["error", "failure", "pending", "success"]).default("success"),
388
- description: z.string().default("")
389
- })
390
- ).default([])
391
- })
392
- ).optional()
393
- })
394
- ).min(1)
395
- });
396
- var stripeSeedStateSchema = z.object({
397
- api_keys: z.array(
398
- z.object({
399
- key: z.string().min(1).default("sk_test_pome_default"),
400
- sid: z.string().min(1).default("default"),
401
- account_id: z.string().min(1).optional()
402
- })
403
- ).default([]),
404
- customers: z.array(z.record(z.string(), z.unknown())).default([]),
405
- products: z.array(z.record(z.string(), z.unknown())).default([]),
406
- prices: z.array(z.record(z.string(), z.unknown())).default([]),
407
- payment_intents: z.array(z.record(z.string(), z.unknown())).default([]),
408
- charges: z.array(z.record(z.string(), z.unknown())).default([]),
409
- events: z.array(z.record(z.string(), z.unknown())).default([]),
410
- balances: z.array(z.record(z.string(), z.unknown())).default([])
411
- });
412
- var slackSeedStateSchema = z.object({
413
- team: z.object({
414
- id: z.string().regex(/^T[A-Z0-9_]+$/).optional(),
415
- name: z.string().default("Pome Twin Workspace"),
416
- domain: z.string().default("pome-twin")
417
- }).prefault({}),
418
- users: z.array(
419
- z.object({
420
- id: z.string().regex(/^[UB][A-Z0-9_]+$/).optional(),
421
- name: z.string().min(1),
422
- real_name: z.string().default(""),
423
- email: z.string().email().optional(),
424
- is_bot: z.boolean().default(false),
425
- is_admin: z.boolean().default(false),
426
- tz: z.string().default("America/Los_Angeles"),
427
- profile: z.record(z.string(), z.unknown()).default({})
428
- })
429
- ).default([]),
430
- channels: z.array(
431
- z.object({
432
- id: z.string().regex(/^[CGDM][A-Z0-9_]+$/).optional(),
433
- name: z.string().regex(/^[a-z0-9_-]{1,80}$/),
434
- is_private: z.boolean().default(false),
435
- topic: z.string().default(""),
436
- purpose: z.string().default(""),
437
- creator: z.string().optional(),
438
- members: z.array(z.string()).default([]),
439
- messages: z.array(
440
- z.object({
441
- ts: z.string().optional(),
442
- user: z.string(),
443
- text: z.string(),
444
- thread_ts: z.string().optional(),
445
- reactions: z.array(z.object({ name: z.string(), user: z.string() })).default([])
446
- })
447
- ).default([])
448
- })
449
- ).default([]),
450
- // Same shape as `seedSchema.files` in `@pome-sh/twin-slack`. `user` and
451
- // `channels` are seed HANDLES (a user/channel `name`) or ids.
452
- files: z.array(
453
- z.object({
454
- id: z.string().regex(/^F[A-Z0-9_]+$/).optional(),
455
- name: z.string().min(1),
456
- title: z.string().optional(),
457
- filetype: z.string().min(1).default("text"),
458
- user: z.string().optional(),
459
- channels: z.array(z.string()).default([]),
460
- content: z.string().optional()
461
- })
462
- ).default([]),
463
- emoji: z.array(
464
- z.object({
465
- name: z.string().regex(/^[a-z0-9_+-]{1,100}$/),
466
- url: z.string().url().optional(),
467
- alias: z.string().regex(/^[a-z0-9_+-]{1,100}$/).optional()
468
- })
469
- ).default([])
470
- });
471
328
  var gmailEmailSchema = z.string().trim().email().transform((value) => value.toLowerCase());
472
329
  var gmailIdSchema = z.string().min(1).max(128).regex(/^[A-Za-z0-9_-]+$/);
473
330
  var gmailAttachmentSeedSchema = z.object({
@@ -720,9 +577,9 @@ var linearSeedStateSchema = z.object({
720
577
  ).max(50).default([])
721
578
  });
722
579
  var providerScopedSeedStateSchema = z.object({
723
- github: z.object({ seed: githubSeedStateSchema }).optional(),
724
- stripe: z.object({ seed: stripeSeedStateSchema }).optional(),
725
- slack: z.object({ seed: slackSeedStateSchema }).optional(),
580
+ github: z.object({ seed: seedSchema$2 }).optional(),
581
+ stripe: z.object({ seed: seedSchema$1 }).optional(),
582
+ slack: z.object({ seed: seedSchema }).optional(),
726
583
  gmail: z.object({ seed: gmailSeedStateSchema }).optional(),
727
584
  linear: z.object({ seed: linearSeedStateSchema }).optional()
728
585
  }).refine(
@@ -731,7 +588,7 @@ var providerScopedSeedStateSchema = z.object({
731
588
  message: "seedState must include github.seed, stripe.seed, slack.seed, gmail.seed, linear.seed, or the legacy GitHub seed shape"
732
589
  }
733
590
  );
734
- var seedStateSchema = z.union([githubSeedStateSchema, providerScopedSeedStateSchema]);
591
+ var seedStateSchema = z.union([seedSchema$2, providerScopedSeedStateSchema]);
735
592
  z.record(
736
593
  z.string(),
737
594
  z.record(z.string(), z.unknown())
@@ -577,8 +577,16 @@ var gmailSeedSchema = z.object({
577
577
  }
578
578
  }
579
579
  });
580
+ function withoutSidecarMeta(input) {
581
+ if (!input || typeof input !== "object" || Array.isArray(input))
582
+ return input;
583
+ if (!("_meta" in input))
584
+ return input;
585
+ const { _meta, ...rest } = input;
586
+ return rest;
587
+ }
580
588
  function parseSeed(input) {
581
- return gmailSeedSchema.parse(input);
589
+ return gmailSeedSchema.parse(withoutSidecarMeta(input));
582
590
  }
583
591
  function loadSeedFromEnv(env = process.env) {
584
592
  const raw = env.POME_SEED_JSON;
@@ -30,16 +30,16 @@ var TWIN_REGISTRY = {
30
30
  envName: "GITHUB",
31
31
  defaultPort: 3333,
32
32
  version: package_default.version,
33
- defaultSeed: async () => (await import('./seed-BG5HMSBM.js')).defaultSeedState(),
34
- parseSeed: async (input) => (await import('./seed-BG5HMSBM.js')).parseSeed(input),
35
- seedFields: async () => Object.keys((await import('./seed-BG5HMSBM.js')).seedSchema.shape),
33
+ defaultSeed: async () => (await import('./seed-BHJKPKUC.js')).defaultSeedState(),
34
+ parseSeed: async (input) => (await import('./seed-BHJKPKUC.js')).parseSeed(input),
35
+ seedFields: async () => Object.keys((await import('./seed-BHJKPKUC.js')).seedSchema.shape),
36
36
  async boot({ seedState, runId, recorder }) {
37
37
  const {
38
38
  createGitHubCloneApp,
39
39
  defaultSeedState,
40
40
  GitHubDomain,
41
41
  openGitHubCloneDatabase
42
- } = await import('./src-DO3BEABU.js');
42
+ } = await import('./src-UY4Y75BD.js');
43
43
  const db = openGitHubCloneDatabase();
44
44
  const domain = new GitHubDomain(db);
45
45
  domain.seed(seedState === void 0 ? defaultSeedState() : seedState);
@@ -59,11 +59,11 @@ var TWIN_REGISTRY = {
59
59
  envName: "SLACK",
60
60
  defaultPort: 3333,
61
61
  version: package_default2.version,
62
- defaultSeed: async () => (await import('./seed-IIMBJHAJ.js')).defaultSeedState(),
63
- parseSeed: async (input) => (await import('./seed-IIMBJHAJ.js')).parseSeed(input),
64
- seedFields: async () => Object.keys((await import('./seed-IIMBJHAJ.js')).seedSchema.shape),
62
+ defaultSeed: async () => (await import('./seed-SYJXLGWF.js')).defaultSeedState(),
63
+ parseSeed: async (input) => (await import('./seed-SYJXLGWF.js')).parseSeed(input),
64
+ seedFields: async () => Object.keys((await import('./seed-SYJXLGWF.js')).seedSchema.shape),
65
65
  async boot({ seedState, runId, recorder }) {
66
- const { createSlackTwinApp, openSlackTwinDatabase, SlackDomain } = await import('./src-ANO374BX.js');
66
+ const { createSlackTwinApp, openSlackTwinDatabase, SlackDomain } = await import('./src-SNSK5ENY.js');
67
67
  const db = openSlackTwinDatabase(":memory:");
68
68
  const domain = new SlackDomain(db);
69
69
  domain.applySeed(seedState);
@@ -86,12 +86,12 @@ var TWIN_REGISTRY = {
86
86
  envName: "STRIPE",
87
87
  defaultPort: 3333,
88
88
  version: package_default3.version,
89
- defaultSeed: async () => (await import('./seed-YWDTT2WL.js')).defaultSeed(),
90
- parseSeed: async (input) => (await import('./seed-YWDTT2WL.js')).parseSeed(input),
91
- seedFields: async () => Object.keys((await import('./seed-YWDTT2WL.js')).seedSchema.shape),
89
+ defaultSeed: async () => (await import('./seed-E6SA4NKZ.js')).defaultSeed(),
90
+ parseSeed: async (input) => (await import('./seed-E6SA4NKZ.js')).parseSeed(input),
91
+ seedFields: async () => Object.keys((await import('./seed-E6SA4NKZ.js')).seedSchema.shape),
92
92
  async boot({ seedState, runId, recorder, twinBaseUrl }) {
93
- const stripeTwin = await import('./src-AMLUIPYO.js');
94
- const { createApp } = await import('./server-FBKFPGR4.js');
93
+ const stripeTwin = await import('./src-V3RUKDMQ.js');
94
+ const { createApp } = await import('./server-GDK4TBTL.js');
95
95
  const {
96
96
  applySeed: applyStripeSeed,
97
97
  createTwinStripeApp,
@@ -132,11 +132,11 @@ var TWIN_REGISTRY = {
132
132
  portEnvName: "GMAIL_TWIN_PORT",
133
133
  tokenEnvName: "POME_GMAIL_TOKEN",
134
134
  version: package_default4.version,
135
- defaultSeed: async () => (await import('./seed-NR6RUKXV.js')).defaultSeedState(),
136
- parseSeed: async (input) => (await import('./seed-NR6RUKXV.js')).parseSeed(input),
137
- seedFields: async () => Object.keys((await import('./seed-NR6RUKXV.js')).gmailSeedSchema.shape),
135
+ defaultSeed: async () => (await import('./seed-W3R53GHH.js')).defaultSeedState(),
136
+ parseSeed: async (input) => (await import('./seed-W3R53GHH.js')).parseSeed(input),
137
+ seedFields: async () => Object.keys((await import('./seed-W3R53GHH.js')).gmailSeedSchema.shape),
138
138
  async boot({ seedState, runId, recorder }) {
139
- const { createGmailTwinApp, GmailDomain, openGmailTwinDatabase, parseSeed } = await import('./src-YGMRIKFV.js');
139
+ const { createGmailTwinApp, GmailDomain, openGmailTwinDatabase, parseSeed } = await import('./src-Z4C4SSDR.js');
140
140
  const db = openGmailTwinDatabase(":memory:");
141
141
  const seed = parseSeed(seedState);
142
142
  const domain = new GmailDomain(db);
@@ -155,9 +155,9 @@ var TWIN_REGISTRY = {
155
155
  portEnvName: "LINEAR_TWIN_PORT",
156
156
  tokenEnvName: "POME_LINEAR_TOKEN",
157
157
  version: package_default5.version,
158
- defaultSeed: async () => (await import('./seed-F7RNI55S.js')).defaultSeedState(),
159
- parseSeed: async (input) => (await import('./seed-F7RNI55S.js')).parseSeed(input),
160
- seedFields: async () => Object.keys((await import('./seed-F7RNI55S.js')).linearSeedSchema.shape),
158
+ defaultSeed: async () => (await import('./seed-5HQC3FVZ.js')).defaultSeedState(),
159
+ parseSeed: async (input) => (await import('./seed-5HQC3FVZ.js')).parseSeed(input),
160
+ seedFields: async () => Object.keys((await import('./seed-5HQC3FVZ.js')).linearSeedSchema.shape),
161
161
  async boot({ seedState, runId, recorder }) {
162
162
  const {
163
163
  createLinearTwinApp,
@@ -165,7 +165,7 @@ var TWIN_REGISTRY = {
165
165
  LinearDomain,
166
166
  openLinearTwinDatabase,
167
167
  parseSeed
168
- } = await import('./src-5SOF4PDV.js');
168
+ } = await import('./src-FUPOFZI4.js');
169
169
  const db = openLinearTwinDatabase(":memory:");
170
170
  const seed = parseSeed(seedState);
171
171
  const domain = new LinearDomain(db);
@@ -181,7 +181,7 @@ var TWIN_REGISTRY = {
181
181
  }
182
182
  };
183
183
  async function createGitHubSmokeApp() {
184
- const { createGitHubCloneApp } = await import('./src-DO3BEABU.js');
184
+ const { createGitHubCloneApp } = await import('./src-UY4Y75BD.js');
185
185
  return createGitHubCloneApp();
186
186
  }
187
187
  function defaultPortFor(twin, env = process.env) {
@@ -1,4 +1,4 @@
1
- import { isTwinName, TWIN_REGISTRY, TWIN_NAMES } from './chunk-CNG6DQWX.js';
1
+ import { isTwinName, TWIN_REGISTRY, TWIN_NAMES } from './chunk-RPPF2KDQ.js';
2
2
  import { readFileSync } from 'node:fs';
3
3
  import { parse } from 'yaml';
4
4
 
@@ -1,13 +1,13 @@
1
1
  import { z } from 'zod';
2
2
 
3
3
  // ../packages/twin-slack/dist/src/seed.js
4
- var seedSchema = z.object({
5
- team: z.object({
4
+ var seedSchema = z.strictObject({
5
+ team: z.strictObject({
6
6
  id: z.string().regex(/^T[A-Z0-9_]+$/).optional(),
7
7
  name: z.string().default("Pome Twin Workspace"),
8
8
  domain: z.string().default("pome-twin")
9
9
  }).prefault({}),
10
- users: z.array(z.object({
10
+ users: z.array(z.strictObject({
11
11
  id: z.string().regex(/^[UB][A-Z0-9_]+$/).optional(),
12
12
  name: z.string().min(1),
13
13
  real_name: z.string().default(""),
@@ -17,7 +17,7 @@ var seedSchema = z.object({
17
17
  tz: z.string().default("America/Los_Angeles"),
18
18
  profile: z.record(z.string(), z.unknown()).default({})
19
19
  })).default([]),
20
- channels: z.array(z.object({
20
+ channels: z.array(z.strictObject({
21
21
  id: z.string().regex(/^[CGDM][A-Z0-9_]+$/).optional(),
22
22
  name: z.string().regex(/^[a-z0-9_-]{1,80}$/),
23
23
  is_private: z.boolean().default(false),
@@ -25,18 +25,18 @@ var seedSchema = z.object({
25
25
  purpose: z.string().default(""),
26
26
  creator: z.string().optional(),
27
27
  members: z.array(z.string()).default([]),
28
- messages: z.array(z.object({
28
+ messages: z.array(z.strictObject({
29
29
  ts: z.string().optional(),
30
30
  user: z.string(),
31
31
  text: z.string(),
32
32
  thread_ts: z.string().optional(),
33
- reactions: z.array(z.object({ name: z.string(), user: z.string() })).default([])
33
+ reactions: z.array(z.strictObject({ name: z.string(), user: z.string() })).default([])
34
34
  })).default([])
35
35
  })).default([]),
36
36
  // Files present in the world before the agent runs. `user` and
37
37
  // `channels` are seed HANDLES (a user/channel `name`) or ids — the same
38
38
  // currency `channels[].members` and `channels[].messages[].user` already use.
39
- files: z.array(z.object({
39
+ files: z.array(z.strictObject({
40
40
  id: z.string().regex(/^F[A-Z0-9_]+$/).optional(),
41
41
  name: z.string().min(1),
42
42
  title: z.string().optional(),
@@ -45,14 +45,22 @@ var seedSchema = z.object({
45
45
  channels: z.array(z.string()).default([]),
46
46
  content: z.string().optional()
47
47
  })).default([]),
48
- emoji: z.array(z.object({
48
+ emoji: z.array(z.strictObject({
49
49
  name: z.string().regex(/^[a-z0-9_+-]{1,100}$/),
50
50
  url: z.string().url().optional(),
51
51
  alias: z.string().regex(/^[a-z0-9_+-]{1,100}$/).optional()
52
52
  })).default([])
53
53
  });
54
+ function withoutSidecarMeta(input) {
55
+ if (!input || typeof input !== "object" || Array.isArray(input))
56
+ return input;
57
+ if (!("_meta" in input))
58
+ return input;
59
+ const { _meta, ...rest } = input;
60
+ return rest;
61
+ }
54
62
  function parseSeed(input) {
55
- return seedSchema.parse(input);
63
+ return seedSchema.parse(withoutSidecarMeta(input));
56
64
  }
57
65
  function loadSeedFromEnv(env = process.env) {
58
66
  const raw = env.POME_SEED_JSON;
@@ -1,20 +1,22 @@
1
1
  import { newGroupId } from './chunk-JNXZBK3O.js';
2
2
  import { DemoCapacityError, capacityLabel, parseCapacityMarker, capacityKindFrom } from './chunk-ZX4WNSZ5.js';
3
- import { runTask, demoTaskPath, DEMO_TASK_NAME, DEMO_REPO } from './chunk-NAU4UZOE.js';
4
- import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, isNarrated, outcomeOf, criterionPhrase, narratorReadingLines } from './chunk-D3NCOYBV.js';
3
+ import { runTask, demoTaskPath, DEMO_TASK_NAME, DEMO_REPO } from './chunk-AEFXTGW3.js';
4
+ import { createHostedClient, parseTaskFile, uploadRunBlobs, scoreFromFinalizeResponse, scoreStatus, isNarrated, outcomeOf, criterionPhrase, narratorReadingLines } from './chunk-BS47AE55.js';
5
5
  import './chunk-NW7HGA2K.js';
6
- import './chunk-3T5XN64P.js';
7
- import './chunk-Q5NBPR57.js';
8
- import { bootTwin } from './chunk-T73VMABH.js';
9
- import './chunk-CNG6DQWX.js';
6
+ import './chunk-PASFBRK4.js';
7
+ import './chunk-3FZY376K.js';
8
+ import { bootTwin } from './chunk-5NPGY73F.js';
9
+ import './chunk-RPPF2KDQ.js';
10
10
  import { getAvailablePort } from './chunk-XDU6TD4O.js';
11
- import { HostedQuotaError, HostedOrchError } from './chunk-533VIN3J.js';
11
+ import { HostedQuotaError, HostedOrchError } from './chunk-NNXVR46L.js';
12
12
  import './chunk-CBFKZZBR.js';
13
- import './chunk-HJX25USP.js';
14
- import './chunk-VOHTQV4J.js';
13
+ import './chunk-NBOQN5VX.js';
14
+ import './chunk-YBWG5JK2.js';
15
+ import './chunk-HRAD7MRX.js';
15
16
  import './chunk-6KJC4BTO.js';
16
17
  import './chunk-SG6ZTIMT.js';
17
- import './chunk-CF6EIU2U.js';
18
+ import './chunk-2K6BJ3PI.js';
19
+ import './chunk-FBSA5L36.js';
18
20
  import { readFile } from 'node:fs/promises';
19
21
  import { join } from 'node:path';
20
22
  import { z } from 'zod';
@@ -1,18 +1,20 @@
1
1
  import { newGroupId } from './chunk-JNXZBK3O.js';
2
- import { runTaskHosted, resolveRunAgentIdentity } from './chunk-4EPOCS3X.js';
3
- import { createHostedClient, parseTaskFile, outcomeOf, isNarrated, criterionPhrase, narratorReadingLines } from './chunk-D3NCOYBV.js';
4
- import './chunk-DWOCTCSE.js';
2
+ import { runTaskHosted, resolveRunAgentIdentity } from './chunk-77EGSHLT.js';
3
+ import { createHostedClient, parseTaskFile, outcomeOf, isNarrated, criterionPhrase, narratorReadingLines } from './chunk-BS47AE55.js';
4
+ import './chunk-VPXIGCZW.js';
5
5
  import './chunk-NW7HGA2K.js';
6
- import './chunk-3T5XN64P.js';
7
- import './chunk-Q5NBPR57.js';
8
- import './chunk-CNG6DQWX.js';
9
- import './chunk-L7XARKMM.js';
10
- import { HostedQuotaError, HostedTrialError } from './chunk-533VIN3J.js';
11
- import './chunk-HJX25USP.js';
12
- import './chunk-VOHTQV4J.js';
6
+ import './chunk-PASFBRK4.js';
7
+ import './chunk-3FZY376K.js';
8
+ import './chunk-RPPF2KDQ.js';
9
+ import './chunk-DFOQGAKS.js';
10
+ import { HostedQuotaError, HostedTrialError } from './chunk-NNXVR46L.js';
11
+ import './chunk-NBOQN5VX.js';
12
+ import './chunk-YBWG5JK2.js';
13
+ import './chunk-HRAD7MRX.js';
13
14
  import './chunk-6KJC4BTO.js';
14
15
  import './chunk-SG6ZTIMT.js';
15
- import './chunk-CF6EIU2U.js';
16
+ import './chunk-2K6BJ3PI.js';
17
+ import './chunk-FBSA5L36.js';
16
18
  import { randomUUID } from 'node:crypto';
17
19
  import { readFile } from 'node:fs/promises';
18
20
  import { dirname } from 'node:path';
@@ -1 +1 @@
1
- export { defaultSeedState, linearSeedSchema, loadSeedFromEnv, parseSeed } from './chunk-Q5NBPR57.js';
1
+ export { defaultSeedState, linearSeedSchema, loadSeedFromEnv, parseSeed } from './chunk-3FZY376K.js';
@@ -1 +1 @@
1
- export { defaultSeedState, loadSeedFromEnv, parseSeed, seedSchema } from './chunk-HJX25USP.js';
1
+ export { defaultSeedState, loadSeedFromEnv, parseSeed, seedSchema } from './chunk-NBOQN5VX.js';
@@ -0,0 +1,2 @@
1
+ export { DEFAULT_API_KEY, DEFAULT_SID, defaultSeed, loadSeedFromEnv, parseSeed, seedSchema } from './chunk-2K6BJ3PI.js';
2
+ import './chunk-FBSA5L36.js';
@@ -1 +1 @@
1
- export { defaultSeedState, loadSeedFromEnv, parseSeed, seedSchema } from './chunk-ZDS25NS5.js';
1
+ export { defaultSeedState, loadSeedFromEnv, parseSeed, seedSchema } from './chunk-YBWG5JK2.js';
@@ -1 +1 @@
1
- export { DEFAULT_GMAIL_AGENT_EMAIL, agentPathInboxMailbox, defaultSeedState, gmailSeedSchema, loadSeedFromEnv, parseSeed } from './chunk-3T5XN64P.js';
1
+ export { DEFAULT_GMAIL_AGENT_EMAIL, agentPathInboxMailbox, defaultSeedState, gmailSeedSchema, loadSeedFromEnv, parseSeed } from './chunk-PASFBRK4.js';
@@ -1,4 +1,4 @@
1
- export { POME_RECORDER_EVENTS_PATH, PROVIDER_SHAPED_TEAM_ID, TwinBootError, TwinError, UnknownToolError, bearerAuth, createAdminGate, createApp, createFileBackedRecorderStore, createRecorderHandle, createRecorderStore, created, ensureTwinAuthSecret, failureInjectionMiddleware, formTokenResolver, isLoopbackHost, mintProviderToken, ok, queryTokenResolver, recordedRequestHeaders, requireAdminAuth, resolveAuthSecret, resolveRecorderStore, serve, setClientIp, setRecordedTool, toTwinHttpEventRow, twinBuildInfo, verifyProviderToken } from './chunk-VOHTQV4J.js';
1
+ export { POME_RECORDER_EVENTS_PATH, PROVIDER_SHAPED_TEAM_ID, TwinBootError, TwinError, UnknownToolError, bearerAuth, createAdminGate, createApp, createFileBackedRecorderStore, createRecorderHandle, createRecorderStore, created, ensureTwinAuthSecret, failureInjectionMiddleware, formTokenResolver, isLoopbackHost, mintProviderToken, ok, queryTokenResolver, recordedRequestHeaders, requireAdminAuth, resolveAuthSecret, resolveRecorderStore, serve, setClientIp, setRecordedTool, toTwinHttpEventRow, twinBuildInfo, verifyProviderToken } from './chunk-HRAD7MRX.js';
2
2
  import './chunk-6KJC4BTO.js';
3
3
  export { redactEvent, redactSecrets } from './chunk-SG6ZTIMT.js';
4
- export { FAILURE_INJECTION_OVERRIDE_KEY, createFailureInjectionStore, failureInjectionRuleSchema } from './chunk-CF6EIU2U.js';
4
+ export { FAILURE_INJECTION_OVERRIDE_KEY, createFailureInjectionStore, failureInjectionRuleSchema } from './chunk-FBSA5L36.js';
@@ -1,27 +1,29 @@
1
1
  #!/usr/bin/env node
2
- import { DEFAULT_CONTROL_PLANE_URL, DEFAULT_DASHBOARD_URL, clearLocalCredentials, friendlyHostedError, SESSION_TWIN_NAMES, runSessionCreate, runSessionList, runSessionStop, resolveCredentials, runTaskHosted, discoverRunSet, VERDICT_ARTIFACT_VERSION, persistCredentialsAfterLogin, DEFAULT_DOCS_SITE_ORIGIN, resolveSeams, resolveCachedAgentId, readLinkCache, postAgentResolver, writeLinkCache, ensurePomeGitignored } from '../../chunk-4EPOCS3X.js';
3
- import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-NAU4UZOE.js';
4
- import { parseTaskFile, scoreStatus, runScoreLine, narratorReadingLines, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, criterionRowLine, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-D3NCOYBV.js';
5
- import '../../chunk-DWOCTCSE.js';
2
+ import { DEFAULT_CONTROL_PLANE_URL, DEFAULT_DASHBOARD_URL, clearLocalCredentials, friendlyHostedError, SESSION_TWIN_NAMES, runSessionCreate, runSessionList, runSessionStop, resolveCredentials, runTaskHosted, discoverRunSet, VERDICT_ARTIFACT_VERSION, persistCredentialsAfterLogin, DEFAULT_DOCS_SITE_ORIGIN, resolveSeams, resolveCachedAgentId, readLinkCache, postAgentResolver, writeLinkCache, ensurePomeGitignored } from '../../chunk-77EGSHLT.js';
3
+ import { assetPath, runTask, resolvePackageRoot, DEMO_TASK_NAME, demoTaskPath } from '../../chunk-AEFXTGW3.js';
4
+ import { parseTaskFile, scoreStatus, runScoreLine, narratorReadingLines, readLatestRun, readMetaSummary, outcomeOf, readConfigTwins, scoreCountsSummary, criterionRowLine, readCodeCriteria, createHostedClient, toTwinHttpEvent, redactJsonl, scoreFromFinalizeResponse, parseGitHubSeedState, uploadRunBlobs, isPreSatisfied } from '../../chunk-BS47AE55.js';
5
+ import '../../chunk-VPXIGCZW.js';
6
6
  import '../../chunk-NW7HGA2K.js';
7
7
  import { GMAIL_CHECKS } from '../../chunk-JM6VS62R.js';
8
- import '../../chunk-3T5XN64P.js';
8
+ import '../../chunk-PASFBRK4.js';
9
9
  import { LINEAR_CHECKS } from '../../chunk-TSOSDKXP.js';
10
- import '../../chunk-Q5NBPR57.js';
11
- import '../../chunk-T73VMABH.js';
12
- import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-CNG6DQWX.js';
13
- import { readManifest, writeManifest, MANIFEST_JSON, readRequiredManifest, normalizeManifestTwins } from '../../chunk-L7XARKMM.js';
10
+ import '../../chunk-3FZY376K.js';
11
+ import '../../chunk-5NPGY73F.js';
12
+ import { TWIN_NAME_LIST, isTwinName, createGitHubSmokeApp } from '../../chunk-RPPF2KDQ.js';
13
+ import { readManifest, writeManifest, MANIFEST_JSON, readRequiredManifest, normalizeManifestTwins } from '../../chunk-DFOQGAKS.js';
14
14
  import '../../chunk-XDU6TD4O.js';
15
- import { MOUNTED_TWINS, deriveAgentSlug, exitCodeFor, HostedUsageError, HostedOrchError, HostedAuthError, HostedQuotaError } from '../../chunk-533VIN3J.js';
15
+ import { MOUNTED_TWINS, deriveAgentSlug, exitCodeFor, HostedUsageError, HostedOrchError, HostedAuthError, HostedQuotaError } from '../../chunk-NNXVR46L.js';
16
16
  import '../../chunk-CBFKZZBR.js';
17
17
  import { TAPE_ASSERTABLE_TOOLS } from '../../chunk-C4BVTUA3.js';
18
- import { seedSchema } from '../../chunk-HJX25USP.js';
18
+ import { seedSchema } from '../../chunk-NBOQN5VX.js';
19
19
  import { SLACK_CHECKS } from '../../chunk-2ZGVDTJC.js';
20
20
  import { oneOf, defineCheck, repoRef, VACUITY_SENTINEL_NUMBER, childStatePath, VACUITY_SENTINEL, statePath, templateSlots, renderCheck, checksDigest, checkPattern, checkNearMissPattern } from '../../chunk-JWJYNAWI.js';
21
- import '../../chunk-VOHTQV4J.js';
21
+ import '../../chunk-YBWG5JK2.js';
22
+ import '../../chunk-HRAD7MRX.js';
22
23
  import { eventSchema, isLegacyEventRow } from '../../chunk-6KJC4BTO.js';
23
24
  import { redactEvent, redactSecrets } from '../../chunk-SG6ZTIMT.js';
24
- import '../../chunk-CF6EIU2U.js';
25
+ import '../../chunk-2K6BJ3PI.js';
26
+ import '../../chunk-FBSA5L36.js';
25
27
  import { Command } from 'commander';
26
28
  import { existsSync, readFileSync, realpathSync, statSync, constants } from 'node:fs';
27
29
  import { mkdir, readFile, rm, writeFile, readdir, copyFile, stat, cp } from 'node:fs/promises';
@@ -821,7 +823,7 @@ async function throwForStatus(res) {
821
823
 
822
824
  // src/task/seed-verifier.ts
823
825
  async function verifySeedWithTwin(seed) {
824
- const { GitHubDomain, openGitHubCloneDatabase } = await import('../../src-DO3BEABU.js');
826
+ const { GitHubDomain, openGitHubCloneDatabase } = await import('../../src-UY4Y75BD.js');
825
827
  const db = openGitHubCloneDatabase(":memory:");
826
828
  try {
827
829
  new GitHubDomain(db).seed(seed);
@@ -4639,7 +4641,7 @@ function firstSentence(description) {
4639
4641
  function resolveExampleRef(env = process.env) {
4640
4642
  const override = env.POME_EXAMPLE_REF?.trim();
4641
4643
  if (override) return override;
4642
- const baked = "76f126bc15b2467859785d59555570627963259e".trim() ;
4644
+ const baked = "81d35ce632f8cd4a8009cad184514b5e688d3c17".trim() ;
4643
4645
  return FULL_SHA.test(baked) ? baked : "main";
4644
4646
  }
4645
4647
  function rawUrlFor(example, file, ref) {
@@ -4994,7 +4996,7 @@ var DEFAULT_AGENT_COMMAND = `node ${DEFAULT_AGENT_FILE}`;
4994
4996
  var MANIFEST_SCHEMA_URL = "https://pome.sh/schemas/v1/pome.json";
4995
4997
  var MAX_UNREADABLE_PATHS_SHOWN = 5;
4996
4998
  function readPackageVersion() {
4997
- if ("0.35.3".length > 0) return "0.35.3";
4999
+ if ("0.36.0".length > 0) return "0.36.0";
4998
5000
  try {
4999
5001
  const here = dirname(fileURLToPath(import.meta.url));
5000
5002
  const candidates = [
@@ -5473,7 +5475,7 @@ function createProgram() {
5473
5475
  return;
5474
5476
  }
5475
5477
  {
5476
- const { runDoctorChecks } = await import('../../checks-TC6O2HZE.js');
5478
+ const { runDoctorChecks } = await import('../../checks-BKMTBJSO.js');
5477
5479
  const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
5478
5480
  const doctorReport = await runDoctorChecks({ mode: useLocal ? "full" : "hosted" });
5479
5481
  if (!doctorReport.ok) {
@@ -5511,7 +5513,7 @@ function createProgram() {
5511
5513
  taskForRuns.config.runs
5512
5514
  );
5513
5515
  if (k > 1) {
5514
- const { runTrialGroup } = await import('../../runTrialGroup-WZ3CUKYB.js');
5516
+ const { runTrialGroup } = await import('../../runTrialGroup-FZUMQLDH.js');
5515
5517
  const fileForRerun = relative(process.cwd(), file);
5516
5518
  const rerunCommand = defaultTask ? options.trials !== void 0 ? `pome run -n ${k}` : "pome run" : `pome run ${fileForRerun && !fileForRerun.startsWith("..") ? fileForRerun : file} -n ${k}`;
5517
5519
  const groupResult = await runTrialGroup({
@@ -5608,7 +5610,7 @@ function createProgram() {
5608
5610
  process.exitCode = 5;
5609
5611
  return;
5610
5612
  }
5611
- const { runDemo } = await import('../../runDemo-EBSKTX6V.js');
5613
+ const { runDemo } = await import('../../runDemo-B2SXM4OC.js');
5612
5614
  const result = await runDemo({
5613
5615
  apiBase: opts.apiUrl.replace(/\/$/, ""),
5614
5616
  dashboardBase: process.env.POME_DASHBOARD_URL ?? DEFAULT_DASHBOARD_URL,
@@ -5626,7 +5628,7 @@ function createProgram() {
5626
5628
  program.command("doctor").summary("Check the agent and twin wiring").description(
5627
5629
  "Check the agent\u2194twin wiring: pome.json (or pome.yaml) present + valid, the local twin boots + serves, requests routed to the twin (not a hardcoded production host), egress floor active. On failure prints one named cause (file:line where knowable) + one concrete fix and exits non-zero."
5628
5630
  ).action(async () => {
5629
- const { runDoctorChecks } = await import('../../checks-TC6O2HZE.js');
5631
+ const { runDoctorChecks } = await import('../../checks-BKMTBJSO.js');
5630
5632
  const { renderDoctorReport } = await import('../../render-ZQQ4UMNO.js');
5631
5633
  const report = await runDoctorChecks();
5632
5634
  for (const line of renderDoctorReport(report, { passNote: true })) console.error(line);
@@ -5803,7 +5805,7 @@ function createProgram() {
5803
5805
  ).description(
5804
5806
  "Start a standalone twin as a long-lived foreground server (Ctrl-C to stop)"
5805
5807
  ).action(async (name, options) => {
5806
- const { runTwinStartCommand } = await import('../../twinStart-2ZNLS3ON.js');
5808
+ const { runTwinStartCommand } = await import('../../twinStart-2LICNC4D.js');
5807
5809
  await runTwinStartCommand(name, options);
5808
5810
  });
5809
5811
  twin.command("seed").argument("<name...>", `Twin name (${TWIN_NAME_LIST.join(" | ")}). Repeat for one file covering several.`).option("--out <path>", "Write to this file instead of stdout. Refuses to overwrite.").option(
@@ -5812,7 +5814,7 @@ function createProgram() {
5812
5814
  ).description(
5813
5815
  "Print a starter seed file for a twin, generated from the twin's own starting state"
5814
5816
  ).action(async (names, options) => {
5815
- const { runTwinSeedCommand } = await import('../../twinSeed-2MRVMNIT.js');
5817
+ const { runTwinSeedCommand } = await import('../../twinSeed-7M4GOIBS.js');
5816
5818
  await runTwinSeedCommand(names, options);
5817
5819
  });
5818
5820
  twin.command("reset").argument("[name]", "Twin name", "github").summary("Reset a twin's saved state").description(
@@ -1,12 +1,12 @@
1
1
  export { LINEAR_CHECKS } from './chunk-TSOSDKXP.js';
2
- import { MCP_PAGE_MAX, defaultSeedState, linearSeedSchema, notFound, badUserInput, MCP_PAGE_DEFAULT, DEFAULT_LINEAR_EMAIL, RELAY_PAGE_MAX, RELAY_PAGE_DEFAULT, STATE_EXPORT_CAP, parseSeed, DEFAULT_LINEAR_CLOCK, LINEAR_PROVIDER_TOKEN_PREFIX, DEFAULT_LINEAR_SID, DEFAULT_SCOPES, linearErrorEnvelope, unauthorizedEnvelope, unsupportedEnvelope, forbiddenEnvelope, assertWebhookUrl, ACCESS_TOKEN_TTL_SECONDS, OAUTH_CODE_TTL_SECONDS, TITLE_MAX_BYTES, BODY_MAX_BYTES, LinearTwinError, GRAPHQL_QUERY_MAX_BYTES, GRAPHQL_SELECTION_DEPTH_MAX } from './chunk-Q5NBPR57.js';
3
- export { DEFAULT_LINEAR_CLOCK, DEFAULT_LINEAR_EMAIL, DEFAULT_LINEAR_PORT, DEFAULT_LINEAR_SID, DEFAULT_LINEAR_TOKEN, LINEAR_PROVIDER_TOKEN_PREFIX, LinearTwinError, STATE_EXPORT_CAP, assertWebhookUrl, defaultSeedState, linearErrorEnvelope, linearSeedSchema, loadSeedFromEnv, parseSeed, unauthorizedEnvelope, unsupportedEnvelope, webhookUrlError } from './chunk-Q5NBPR57.js';
2
+ import { MCP_PAGE_MAX, defaultSeedState, linearSeedSchema, notFound, badUserInput, MCP_PAGE_DEFAULT, DEFAULT_LINEAR_EMAIL, RELAY_PAGE_MAX, RELAY_PAGE_DEFAULT, STATE_EXPORT_CAP, parseSeed, DEFAULT_LINEAR_CLOCK, LINEAR_PROVIDER_TOKEN_PREFIX, DEFAULT_LINEAR_SID, DEFAULT_SCOPES, linearErrorEnvelope, unauthorizedEnvelope, unsupportedEnvelope, forbiddenEnvelope, assertWebhookUrl, ACCESS_TOKEN_TTL_SECONDS, OAUTH_CODE_TTL_SECONDS, TITLE_MAX_BYTES, BODY_MAX_BYTES, LinearTwinError, GRAPHQL_QUERY_MAX_BYTES, GRAPHQL_SELECTION_DEPTH_MAX } from './chunk-3FZY376K.js';
3
+ export { DEFAULT_LINEAR_CLOCK, DEFAULT_LINEAR_EMAIL, DEFAULT_LINEAR_PORT, DEFAULT_LINEAR_SID, DEFAULT_LINEAR_TOKEN, LINEAR_PROVIDER_TOKEN_PREFIX, LinearTwinError, STATE_EXPORT_CAP, assertWebhookUrl, defaultSeedState, linearErrorEnvelope, linearSeedSchema, loadSeedFromEnv, parseSeed, unauthorizedEnvelope, unsupportedEnvelope, webhookUrlError } from './chunk-3FZY376K.js';
4
4
  import './chunk-JWJYNAWI.js';
5
5
  import { routeInputDeclarer, mountDeclaredRoute, UndeclaredInputError } from './chunk-IZFM7W2V.js';
6
- import { loadMcpToolFixture, deriveMcpToolTable, openTwinDatabase, defineTwin, createApp } from './chunk-VOHTQV4J.js';
6
+ import { loadMcpToolFixture, deriveMcpToolTable, openTwinDatabase, defineTwin, createApp } from './chunk-HRAD7MRX.js';
7
7
  import './chunk-6KJC4BTO.js';
8
8
  import './chunk-SG6ZTIMT.js';
9
- import './chunk-CF6EIU2U.js';
9
+ import './chunk-FBSA5L36.js';
10
10
  import { createHmac, timingSafeEqual, createHash, randomBytes } from 'node:crypto';
11
11
  import { z } from 'zod';
12
12
  import { isIP } from 'node:net';
@@ -1,12 +1,12 @@
1
1
  export { SLACK_CHECKS } from './chunk-2ZGVDTJC.js';
2
2
  import './chunk-JWJYNAWI.js';
3
- import { defaultSeedState, parseSeed } from './chunk-ZDS25NS5.js';
4
- export { defaultSeedState, loadSeedFromEnv, parseSeed, seedSchema } from './chunk-ZDS25NS5.js';
3
+ import { defaultSeedState, parseSeed } from './chunk-YBWG5JK2.js';
4
+ export { defaultSeedState, loadSeedFromEnv, parseSeed, seedSchema } from './chunk-YBWG5JK2.js';
5
5
  import { routeInputDeclarer, booleanInput, integerInput, mountDeclaredRoute, UndeclaredInputError } from './chunk-IZFM7W2V.js';
6
- import { loadMcpToolFixture, defineTwin, queryTokenResolver, formTokenResolver, deriveMcpToolTable, UnknownToolError, openTwinDatabase, createApp, typeDisagreements } from './chunk-VOHTQV4J.js';
6
+ import { loadMcpToolFixture, defineTwin, queryTokenResolver, formTokenResolver, deriveMcpToolTable, UnknownToolError, openTwinDatabase, createApp, typeDisagreements } from './chunk-HRAD7MRX.js';
7
7
  import './chunk-6KJC4BTO.js';
8
8
  import './chunk-SG6ZTIMT.js';
9
- import './chunk-CF6EIU2U.js';
9
+ import './chunk-FBSA5L36.js';
10
10
  import { z, ZodError } from 'zod';
11
11
 
12
12
  // ../packages/twin-slack/dist/src/db.js