halfcycle 0.12.0 → 0.13.0-rc.2

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "halfcycle",
3
- "version": "0.12.0",
3
+ "version": "0.13.0-rc.2",
4
4
  "description": "Halfcycle Method bundle — resolution-stub slash commands, remote method-delivery registration, and governance-hook wiring for a Halfcycle engagement repo. It ships NO worker role files: a project's roles are authored from that project's own recorded decisions at orchestration kickoff (FX-2, W3-F-27).",
5
5
  "commands": [
6
6
  {
@@ -16293,13 +16293,39 @@ var leftForOwnerSchema = external_exports.object({
16293
16293
  }).strict().refine((v) => v.tasks.length + v.waiting.length > 0, {
16294
16294
  message: "is sent only when some work was left for the owner"
16295
16295
  });
16296
+ var TASKS_FILE_PATH = "docs/tasks.md";
16297
+ function isTicket(ref, url2) {
16298
+ const issue2 = /^#([1-9][0-9]{0,9})$/.exec(ref);
16299
+ if (issue2 === null)
16300
+ return ref === TASKS_FILE_PATH && (url2 === void 0 || url2 === null);
16301
+ if (url2 === void 0 || url2 === null)
16302
+ return true;
16303
+ const address = /^(.*)\/issues\/([1-9][0-9]{0,9})$/.exec(url2);
16304
+ return address !== null && address[2] === issue2[1] && GITHUB_REPOSITORY_ADDRESS.test(address[1]) && !looksLikeSecret(url2);
16305
+ }
16306
+ var TICKET_MESSAGE = `must be #<number> or ${TASKS_FILE_PATH}, with a link only beside #<number>: https://github.com/<owner>/<repo>/issues/<number>`;
16307
+ var ticketSchema = external_exports.object({
16308
+ ref: external_exports.string(),
16309
+ url: external_exports.string().optional()
16310
+ }).strict().refine((t) => isTicket(t.ref, t.url), { message: TICKET_MESSAGE });
16311
+ var TICKET_TITLE_MAX = 240;
16312
+ var TICKETS_MAX = 500;
16313
+ var ticketEntrySchema = external_exports.object({
16314
+ title: plainText(TICKET_TITLE_MAX),
16315
+ ref: external_exports.string(),
16316
+ url: external_exports.string().nullable()
16317
+ }).strict().refine((t) => isTicket(t.ref, t.url), { message: TICKET_MESSAGE });
16318
+ var ticketsSchema = external_exports.object({
16319
+ entries: external_exports.array(ticketEntrySchema).min(1).max(TICKETS_MAX)
16320
+ }).strict();
16296
16321
  var observedCloseSchema = external_exports.object({
16297
16322
  sequence: external_exports.number().int().min(1),
16298
16323
  closedAt: utcIso8601,
16299
16324
  closedBy: closedBySchema,
16300
16325
  crossed: crossedSchema,
16301
16326
  seatCoverage: seatCoverageSchema.nullable(),
16302
- leftForOwner: leftForOwnerSchema.optional()
16327
+ leftForOwner: leftForOwnerSchema.optional(),
16328
+ tickets: ticketsSchema.optional()
16303
16329
  }).strict();
16304
16330
  var couldNotRunCheckSchema = external_exports.object({
16305
16331
  check: plainText(),
@@ -16846,7 +16872,8 @@ var buildTaskSchema = external_exports.object({
16846
16872
  ships: buildTaskShipsSchema.optional(),
16847
16873
  // The commit or version the task reported when it shipped, exactly as reported, as
16848
16874
  // one word with no spaces. Absent until it has shipped, or when it reported none.
16849
- shipped: external_exports.string().min(1).max(BUILD_TASK_SHIPPED_MAX).regex(/^[^\s\x00-\x1f\x7f-\x9f]*$/, { message: "must be one word, with no spaces or control characters" }).optional()
16875
+ shipped: external_exports.string().min(1).max(BUILD_TASK_SHIPPED_MAX).regex(/^[^\s\x00-\x1f\x7f-\x9f]*$/, { message: "must be one word, with no spaces or control characters" }).optional(),
16876
+ ticket: ticketSchema.optional()
16850
16877
  }).strict().superRefine((task, ctx) => {
16851
16878
  if (task.reviews !== void 0 && task.reviews === task.id) {
16852
16879
  ctx.addIssue({
@@ -17506,7 +17533,10 @@ var METHOD_FILE_PATTERNS = [
17506
17533
  "docs/phases",
17507
17534
  "docs/build-records",
17508
17535
  "docs/decisions",
17509
- "docs/components"
17536
+ "docs/components",
17537
+ TASKS_FILE_PATH,
17538
+ ".gitignore",
17539
+ ".gitattributes"
17510
17540
  ];
17511
17541
  var TEST_FILE_PATTERNS = [
17512
17542
  "**/*.test.*",
@@ -19003,7 +19033,7 @@ function paceHeldStartTextOf(input) {
19003
19033
  }
19004
19034
  var PACE_FIRST_READ = "Reading this computer's usage records for the first time. This can take a minute.";
19005
19035
  var PACE_AGENTS_TOO_MANY = `Run at most ${String(PACE_AGENTS_MAX)} agents at once.`;
19006
- var PACE_ONLY_PERSON_RAISES = 'Only the person can raise the number of agents, by typing "faster" or "run 5 agents" in the chat. Nothing was changed.';
19036
+ var PACE_ONLY_PERSON_RAISES = 'The build is registered at the careful start. A higher number of agents waits for you: type "faster" or "run 5 agents" in the chat.';
19007
19037
  function paceStatusLineOf(percent, window) {
19008
19038
  return `Halfcycle \xB7 ${String(Math.round(percent))}% of this ${paceWindowWordsOf(window)} used`;
19009
19039
  }
@@ -19679,6 +19709,8 @@ var ownerWaitAddResultSchema = external_exports.discriminatedUnion("outcome", [
19679
19709
  external_exports.object({ outcome: external_exports.literal("refused"), reason: external_exports.literal("too-many") }).strict()
19680
19710
  ]);
19681
19711
  var ownerWaitUndoableSchema = external_exports.enum(["yes", "no"]);
19712
+ var OWNER_WAIT_STEP_MAX = 64;
19713
+ var ownerWaitStepSchema = external_exports.string().max(OWNER_WAIT_STEP_MAX).refine((v) => stepIdSchema.safeParse(v).success, { message: "must be the id of a step, as the method names it" });
19682
19714
  var ownerWaitDeclareRequestSchema = external_exports.object({
19683
19715
  engagementId: external_exports.string().min(1),
19684
19716
  item: ownerWaitItemRefSchema,
@@ -19687,7 +19719,8 @@ var ownerWaitDeclareRequestSchema = external_exports.object({
19687
19719
  task: buildTaskIdSchema.optional(),
19688
19720
  by: agentNameSchema.optional(),
19689
19721
  undoable: ownerWaitUndoableSchema.optional(),
19690
- how: statementText(STATEMENT_MAX).optional()
19722
+ how: statementText(STATEMENT_MAX).optional(),
19723
+ step: ownerWaitStepSchema.optional()
19691
19724
  }).strict().refine((r) => r.undoable === "yes" === (r.how !== void 0), {
19692
19725
  message: "says how to undo it exactly when it can be undone",
19693
19726
  path: ["how"]
@@ -27882,11 +27915,12 @@ async function runPaceVerb(args2, deps = {}) {
27882
27915
  named: named2
27883
27916
  });
27884
27917
  const suggested = suggestFor(null);
27885
- if (parsed.agents !== null && parsed.agents > (kept ?? suggested.number)) {
27886
- return { stdout: null, stderr: [...stderr, PACE_ONLY_PERSON_RAISES], code: 2 };
27887
- }
27888
- const named = parsed.agents ?? kept;
27889
- suggestion = { ...named === null ? suggested : suggestFor(named), ...ceiling };
27918
+ const waits = parsed.agents !== null && parsed.agents > (kept ?? suggested.number);
27919
+ if (waits)
27920
+ stderr.push(PACE_ONLY_PERSON_RAISES);
27921
+ const named = waits ? kept : parsed.agents ?? kept;
27922
+ const startAt = waits && named === null ? CAREFUL_START_AGENTS : named;
27923
+ suggestion = { ...startAt === null ? suggested : suggestFor(startAt), ...ceiling };
27890
27924
  number4 = suggestion.number;
27891
27925
  writeBuildNumber(engagementId, { phase: parsed.phase, number: number4, namedByOwner: named !== null }, deps.home);
27892
27926
  moveRelayedToPhase(engagementId, parsed.phase, project, deps.home);
@@ -32087,8 +32121,20 @@ function savedText(object2, cwd, env) {
32087
32121
  return text.ok ? text.value : null;
32088
32122
  }
32089
32123
  function recordRoot(abs, env) {
32090
- if (isInside(abs, env.projectDir))
32091
- return env.projectDir;
32124
+ if (isInside(abs, env.projectDir)) {
32125
+ const copies = join16(env.projectDir, ".claude", "worktrees");
32126
+ if (!isInside(abs, copies) || !env.sameRepository(abs))
32127
+ return env.projectDir;
32128
+ let at = abs;
32129
+ while (!isDirectory(at)) {
32130
+ const up = dirname7(at);
32131
+ if (up === at)
32132
+ return env.projectDir;
32133
+ at = up;
32134
+ }
32135
+ const top = env.repoRoot(at);
32136
+ return top !== null && isInside(top, copies) ? top : env.projectDir;
32137
+ }
32092
32138
  if (env.isTemp(abs) || !env.sameRepository(abs))
32093
32139
  return null;
32094
32140
  let dir = abs;
@@ -33014,7 +33060,7 @@ var NUMBERS_WAIT_MS = 50;
33014
33060
  var NUMBERS_LOCK_STALE_MS = 5e3;
33015
33061
  var NUMBERS_LOCK_POLL_MS = 2;
33016
33062
  var COPY_GIT_TIMEOUT_MS = 3e3;
33017
- var ALLOW_NUMBER = new RegExp(`^${ALLOW_REPLY}(?: +([0-9]{1,4}))?$`);
33063
+ var ALLOW_NUMBER = new RegExp(`^${ALLOW_REPLY}(?: +([0-9]{1,4}))?\\.?$`);
33018
33064
  var STEP_MAX_LENGTH = 1e3;
33019
33065
  function allowReplyOf(prompt) {
33020
33066
  if (typeof prompt !== "string")
@@ -34993,6 +35039,53 @@ var AS_MANY = new RegExp(`^${VERB}as many agents as (?:possible|you can)${QUALIF
34993
35039
  var VAGUE = new RegExp(`^${VERB}(?:lots of|a lot of|loads of|plenty of|many|some|several|a few|a bunch of) agents${QUALIFIER}$`, "i");
34994
35040
  var KEEP_FREE = /^keep ([0-9]{1,3})% free$/i;
34995
35041
  var USE_UP_TO = /^use up to ([0-9]{1,3})%$/i;
35042
+ var INTENT_MAX_WORDS = 12;
35043
+ var WORD_OR_DIGITS = `-?[0-9]+(?:\\.[0-9]+)?|${NUMBER_WORDS.join("|")}`;
35044
+ var FILLER = /* @__PURE__ */ new Set([
35045
+ "please",
35046
+ "remember",
35047
+ "we",
35048
+ "need",
35049
+ "to",
35050
+ "let's",
35051
+ "lets",
35052
+ "can",
35053
+ "you",
35054
+ "now",
35055
+ "build",
35056
+ "building",
35057
+ "run",
35058
+ "use",
35059
+ "go",
35060
+ "start",
35061
+ "at",
35062
+ "with",
35063
+ "the",
35064
+ "a",
35065
+ "and",
35066
+ "keep"
35067
+ ]);
35068
+ var NEGATED = /\?|\b(?:not|never)\b|don['’]?t/;
35069
+ var EXPR_MAX = /^(?:(?:max|maximum|full|top|fastest) (?:pace|speed)|as many agents as possible)$/;
35070
+ var EXPR_FASTER = /^(?:faster|more agents|(?:increase|raise|up) (?:pace|speed)|speed up)$/;
35071
+ var EXPR_SLOWER = /^(?:slower|slow down|fewer agents|(?:decrease|lower|reduce) (?:pace|speed))$/;
35072
+ var EXPR_AGENTS = new RegExp(`^(${WORD_OR_DIGITS}) agents?(?: once| in parallel)?$`);
35073
+ function intentShape(line2) {
35074
+ const lowered = line2.toLowerCase().replace(/[.!,\s]+$/, "");
35075
+ if (lowered.split(" ").length > INTENT_MAX_WORDS || NEGATED.test(lowered))
35076
+ return null;
35077
+ const rest = lowered.split(" ").map((w) => w.replace(/^[.!,]+|[.!,]+$/g, "")).filter((w) => w !== "" && !FILLER.has(w)).join(" ");
35078
+ const agents = EXPR_AGENTS.exec(rest);
35079
+ if (agents !== null)
35080
+ return { kind: "agents", count: countOf(agents[1]) };
35081
+ if (EXPR_MAX.test(rest))
35082
+ return { kind: "max" };
35083
+ if (EXPR_FASTER.test(rest))
35084
+ return { kind: "faster" };
35085
+ if (EXPR_SLOWER.test(rest))
35086
+ return { kind: "slower" };
35087
+ return null;
35088
+ }
34996
35089
  function countOf(said) {
34997
35090
  const word = NUMBER_WORDS.indexOf(said.toLowerCase());
34998
35091
  return word >= 0 ? word + 1 : Number(said);
@@ -35021,7 +35114,7 @@ function pacePhraseShape(prompt) {
35021
35114
  const use = USE_UP_TO.exec(line2);
35022
35115
  if (use !== null)
35023
35116
  return { kind: "use-up-to", percent: Number(use[1]) };
35024
- return null;
35117
+ return intentShape(line2);
35025
35118
  }
35026
35119
 
35027
35120
  // dist/hooks/review-phrase.js
@@ -35933,10 +36026,10 @@ async function decidePace(shape, opts) {
35933
36026
  } catch {
35934
36027
  }
35935
36028
  };
35936
- if (shape.kind === "faster" || shape.kind === "agents" || shape.kind === "max") {
35937
- if (shape.kind === "faster" && running === null)
36029
+ if (shape.kind === "faster" || shape.kind === "slower" || shape.kind === "agents" || shape.kind === "max") {
36030
+ if ((shape.kind === "faster" || shape.kind === "slower") && running === null)
35938
36031
  return say(paceNoBuildText());
35939
- const number4 = shape.kind === "faster" ? running.build.number + 1 : shape.kind === "max" ? PACE_AGENTS_MAX : shape.count;
36032
+ const number4 = shape.kind === "faster" ? running.build.number + 1 : shape.kind === "slower" ? Math.max(1, running.build.number - 1) : shape.kind === "max" ? PACE_AGENTS_MAX : shape.count;
35940
36033
  if (!Number.isInteger(number4) || number4 < 1 || number4 > PACE_AGENTS_MAX)
35941
36034
  return say(paceAgentsRangeText());
35942
36035
  const before = running !== null ? running.build.number : project.number ?? CAREFUL_START_AGENTS;
@@ -80,11 +80,28 @@ export interface FactProbes {
80
80
  readonly projectName: (dir: string) => string | undefined;
81
81
  readonly commitCount: (dir: string) => number | null;
82
82
  readonly installedVersion: (dir: string) => string | undefined;
83
- /** Which Halfcycle this run talks to, as an address a person recognises. */
84
- readonly websiteHost: (env: NodeJS.ProcessEnv) => string | undefined;
83
+ /** Which Halfcycle this project talks to, as an address a person recognises. */
84
+ readonly websiteHost: (env: NodeJS.ProcessEnv, dir: string) => string | undefined;
85
85
  }
86
86
  /** The real probes. Each one is separately replaceable, which is the point of the seam. */
87
87
  export declare const REAL_PROBES: FactProbes;
88
+ /**
89
+ * WHICH HALFCYCLE THIS PROJECT TALKS TO, as the banner shows it (walk-11-client-fixes AC3).
90
+ *
91
+ * Three sources, in order: `HALFCYCLE_SERVICE_URL` when it is set; else the service the
92
+ * machine-level store of the engagement the project's pin names holds, which is how a
93
+ * project installed against staging says so with nothing exported; else the published
94
+ * service. The second is the same source the CLI's console links already read
95
+ * (`projectPageUrl`), so the banner and those links cannot name two services.
96
+ *
97
+ * Each read is its own `try`: a pin that is not JSON, an engagement id that cannot be a
98
+ * path, or a store that cannot be read falls through to the next source rather than
99
+ * dropping the row. The published origin shows as the brand's address whichever source
100
+ * named it; any other origin shows its host, because there the host is the diagnostic.
101
+ *
102
+ * @param home the home folder the store is under; the user's own when absent.
103
+ */
104
+ export declare function serviceHost(env: NodeJS.ProcessEnv, projectDir: string, home?: string): string;
88
105
  /**
89
106
  * The opening block's content for a run against `projectDir`.
90
107
  *
@@ -1 +1 @@
1
- {"version":3,"file":"banner-facts.d.ts","sourceRoot":"","sources":["../src/banner-facts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAkB,KAAK,aAAa,EAAmB,MAAM,aAAa,CAAC;AAElF;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,iBAAiB,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,EAAE,SAAS,MAAM,EAGpC,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAI3C,CAAC;AAEF;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,sBAA2B,GAAG,MAAM,GAAG,SAAS,CAEvF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,GAAE,qBAA0B,GAAG,MAAM,GAAG,SAAS,CAEjF;AAED;0CAC0C;AAC1C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACrD,gFAAgF;IAChF,QAAQ,CAAC,YAAY,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC/D,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,MAAM,GAAG,SAAS,CAAC;CACtE;AAED,2FAA2F;AAC3F,eAAO,MAAM,WAAW,EAAE,UAsCzB,CAAC;AAQF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,MAAM,GAAE,UAAwB,GAC/B,aAAa,CAyCf"}
1
+ {"version":3,"file":"banner-facts.d.ts","sourceRoot":"","sources":["../src/banner-facts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKjD,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAkB,KAAK,aAAa,EAAmB,MAAM,aAAa,CAAC;AAElF;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,iBAAiB,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,EAAE,SAAS,MAAM,EAGpC,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAI3C,CAAC;AAEF;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,sBAA2B,GAAG,MAAM,GAAG,SAAS,CAEvF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,GAAE,qBAA0B,GAAG,MAAM,GAAG,SAAS,CAEjF;AAED;0CAC0C;AAC1C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACrD,gFAAgF;IAChF,QAAQ,CAAC,YAAY,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC/D,gFAAgF;IAChF,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACnF;AAED,2FAA2F;AAC3F,eAAO,MAAM,WAAW,EAAE,UAgCzB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAU7F;AA2BD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,MAAM,GAAE,UAAwB,GAC/B,aAAa,CAyCf"}
@@ -1 +1 @@
1
- {"version":3,"file":"render-v2.d.ts","sourceRoot":"","sources":["../../src/build-record/render-v2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAkBL,KAAK,WAAW,EAQjB,MAAM,mBAAmB,CAAC;AA8J3B;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAepD;AAKD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASpD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOvD;AA2PD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAO/D;AA6WD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAgFvE"}
1
+ {"version":3,"file":"render-v2.d.ts","sourceRoot":"","sources":["../../src/build-record/render-v2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EAmBL,KAAK,WAAW,EAQjB,MAAM,mBAAmB,CAAC;AA8J3B;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAepD;AAKD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASpD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOvD;AA2PD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAO/D;AAiYD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAgFvE"}