mainflow 0.22.0 → 0.23.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/dist/cli.js CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import { $ as reopenIssue, A as addAction, C as setCriterionText, D as updateTask, E as supersedeDecision, F as setSessionArchived, J as appendOps, L as setSessionStatus, M as handoffSession, O as sessionBriefing, P as readSession, Q as planIssue, S as setCriterion, V as updateAction, X as createFinding, Y as closeIssue, Z as createIssue, _ as createTask, b as setArchived, et as setFindingArchived, f as acceptDecision, ft as WriteError, g as createMainline, gt as findHubRoot, h as createDecision, it as loadHub, l as migrateHub, lt as MAINLINE_FILE, m as addRepo, nt as setIssueArchived, p as addHub, rt as HubError, tt as setFindingStatus, ut as TASK_FILE, v as dropChecklistItem, w as setMainlineStatus, x as setChecklistItem, y as initHub, z as startSession } from "./host-0_zkFbzM.js";
3
- import { F as parseRef, I as refExample } from "./dist-DCYzrl7J.js";
2
+ import { $ as reopenIssue, A as addAction, C as setCriterionText, D as updateTask, E as supersedeDecision, F as setSessionArchived, J as appendOps, L as setSessionStatus, M as handoffSession, O as sessionBriefing, P as readSession, Q as planIssue, S as setCriterion, V as updateAction, X as createFinding, Y as closeIssue, Z as createIssue, _ as createTask, b as setArchived, et as setFindingArchived, f as acceptDecision, ft as WriteError, g as createMainline, gt as findHubRoot, h as createDecision, it as loadHub, l as migrateHub, lt as MAINLINE_FILE, m as addRepo, nt as setIssueArchived, p as addHub, rt as HubError, tt as setFindingStatus, ut as TASK_FILE, v as dropChecklistItem, w as setMainlineStatus, x as setChecklistItem, y as initHub, z as startSession } from "./host-DkaCYnnc.js";
3
+ import { I as parseRef, L as refExample } from "./dist-Dy45myuN.js";
4
4
  import { t as listProgress } from "./progress-1BfPg2zN.js";
5
5
  import { COMMAND_SPECS, OPTIONS } from "./facts.js";
6
6
  import { hookFallback, parsePayload, runHook } from "./hooks.js";
7
- import { l as CLI_VERSION, r as launchUi, s as startUiInBackground } from "./launch-B8-NVG2g.js";
7
+ import { l as CLI_VERSION, r as launchUi, s as startUiInBackground } from "./launch-DOX1TTGx.js";
8
8
  import { readFileSync, realpathSync } from "node:fs";
9
9
  import { join, relative } from "node:path";
10
10
  import { fileURLToPath } from "node:url";
@@ -133,6 +133,7 @@ const RUNS = {
133
133
  title: required(opts, "title", "--title \"以文字檔為準\""),
134
134
  status: opts.status,
135
135
  by: opts.by,
136
+ basis: opts.basis,
136
137
  affects: opts.affects ? list(opts.affects) : void 0
137
138
  });
138
139
  return done(`created ${ref} ${relative(root, file)}`);
@@ -212,7 +213,10 @@ const RUNS = {
212
213
  setChecklistItem(root, args[0], false);
213
214
  return done(`unchecked ${args[0]}`);
214
215
  },
215
- "decision accept": ({ root, args, opts }) => done(`accepted ${args[0]} (${acceptDecision(root, args[0], opts.by).decidedAt})`),
216
+ "decision accept": ({ root, args, opts }) => done(`accepted ${args[0]} (${acceptDecision(root, args[0], {
217
+ by: opts.by,
218
+ basis: opts.basis
219
+ }).decidedAt})`),
216
220
  "item drop": ({ root, args, opts }) => {
217
221
  dropChecklistItem(root, args[0], {
218
222
  supersededBy: opts.by,
@@ -508,6 +508,8 @@ const DECIDERS = [
508
508
  "ai",
509
509
  "relay"
510
510
  ];
511
+ /** How the decider settled it: by naming an option, or by going with the recommendation without naming one */
512
+ const DECISION_BASES = ["explicit", "recommended"];
511
513
  const MERGE_STATES = [
512
514
  "open",
513
515
  "merged",
@@ -746,6 +748,7 @@ const decisionSchema = z.object({
746
748
  decidedAt: dateOrTime.optional(),
747
749
  supersededBy: id("decision").optional(),
748
750
  by: z.enum(DECIDERS).optional(),
751
+ basis: z.enum(DECISION_BASES).optional(),
749
752
  /** Tasks and items the decision shapes; while it is proposed, the checklist items among them wait for it */
750
753
  affects: z.array(anyRef).optional(),
751
754
  /** Whether the choice can be undone cheaply later */
@@ -901,4 +904,4 @@ function parseOpsLine(line) {
901
904
  return parsed.success ? parsed.data : null;
902
905
  }
903
906
  //#endregion
904
- export { formatOpsEntry as A, waitingForRef as B, SURVEY_SECTION as C, configSchema as D, WORK_STATUS as E, parseRef as F, grantCovers as G, GRANT_FORMS as H, refExample as I, parseGrantTarget as J, grantForm as K, refMainline as L, mainlineSchema as M, opsEntrySchema as N, decisionSchema as O, parseOpsLine as P, sessionSchema as R, SURVEY_LINES as S, TASK_SECTIONS as T, GRANT_TARGET_FORMS as U, GRANT_ACTIONS as V, describeRequest as W, PRIORITIES as _, DECISION_STATUS as a, SESSION_STATUS as b, FINDING_STATUS as c, ISSUE_SECTIONS as d, ISSUE_STATUS as f, MERGE_STATES as g, MAINLINE_STATUS as h, DECISION_SECTIONS as i, issueSchema as j, findingSchema as k, FORMAT_VERSION as l, MAINLINE_SECTIONS as m, CLOSED_STATUS as n, DEFAULT_CATEGORIES as o, LINK_RELS as p, grantRepo as q, DECIDERS as r, FINDING_SECTIONS as s, CHECKLIST_REF as t, ID_PATTERNS as u, REF_EXAMPLES as v, TASK_REQUIRED_SECTIONS as w, SLUG as x, RESERVED_HUB_NAMES as y, taskSchema as z };
907
+ export { findingSchema as A, taskSchema as B, SURVEY_LINES as C, WORK_STATUS as D, TASK_SECTIONS as E, parseOpsLine as F, describeRequest as G, GRANT_ACTIONS as H, parseRef as I, grantRepo as J, grantCovers as K, refExample as L, issueSchema as M, mainlineSchema as N, configSchema as O, opsEntrySchema as P, refMainline as R, SLUG as S, TASK_REQUIRED_SECTIONS as T, GRANT_FORMS as U, waitingForRef as V, GRANT_TARGET_FORMS as W, parseGrantTarget as Y, MERGE_STATES as _, DECISION_SECTIONS as a, RESERVED_HUB_NAMES as b, FINDING_SECTIONS as c, ID_PATTERNS as d, ISSUE_SECTIONS as f, MAINLINE_STATUS as g, MAINLINE_SECTIONS as h, DECISION_BASES as i, formatOpsEntry as j, decisionSchema as k, FINDING_STATUS as l, LINK_RELS as m, CLOSED_STATUS as n, DECISION_STATUS as o, ISSUE_STATUS as p, grantForm as q, DECIDERS as r, DEFAULT_CATEGORIES as s, CHECKLIST_REF as t, FORMAT_VERSION as u, PRIORITIES as v, SURVEY_SECTION as w, SESSION_STATUS as x, REF_EXAMPLES as y, sessionSchema as z };
package/dist/facts.d.ts CHANGED
@@ -127,7 +127,7 @@ export declare const COMMAND_SPECS: {
127
127
  readonly needsHub: true;
128
128
  };
129
129
  readonly 'new decision': {
130
- readonly usage: 'new decision <m> <slug> --title <title> [--status proposed] [--by user|ai|relay] [--affects <m/t or m/t#c>,...]';
130
+ readonly usage: 'new decision <m> <slug> --title <title> [--status proposed] [--by user|ai|relay] [--basis explicit|recommended] [--affects <m/t or m/t#c>,...]';
131
131
  readonly summary: 'Create a decision file; proposed while the question is still open';
132
132
  readonly args: 2;
133
133
  readonly needsHub: true;
@@ -205,7 +205,7 @@ export declare const COMMAND_SPECS: {
205
205
  readonly needsHub: true;
206
206
  };
207
207
  readonly 'decision accept': {
208
- readonly usage: 'decision accept <m/d> [--by user|ai|relay]';
208
+ readonly usage: 'decision accept <m/d> [--by user|ai|relay] [--basis explicit|recommended]';
209
209
  readonly summary: 'Settle a proposed decision; the items it affects stop waiting for it';
210
210
  readonly args: 1;
211
211
  readonly needsHub: true;
@@ -324,6 +324,9 @@ export declare const OPTIONS: {
324
324
  readonly by: {
325
325
  readonly type: 'string';
326
326
  };
327
+ readonly basis: {
328
+ readonly type: 'string';
329
+ };
327
330
  readonly port: {
328
331
  readonly type: 'string';
329
332
  };
@@ -433,6 +436,7 @@ export declare const STATUSES: {
433
436
  readonly session: readonly ["active", "paused", "ended", "handed-off"];
434
437
  readonly merge: readonly ["open", "merged", "abandoned"];
435
438
  readonly decider: readonly ["user", "ai", "relay"];
439
+ readonly basis: readonly ["explicit", "recommended"];
436
440
  };
437
441
  /** Reference formats, one example each, in the order a reader meets them. */
438
442
  export declare const REFERENCES: readonly [{
@@ -547,7 +551,7 @@ export interface FieldSpec {
547
551
  export declare const FIELDS: {
548
552
  readonly mainline: readonly [...FieldSpec[], FieldSpec, FieldSpec, FieldSpec, FieldSpec, FieldSpec, FieldSpec];
549
553
  readonly task: readonly [...FieldSpec[], FieldSpec, FieldSpec, FieldSpec, FieldSpec, FieldSpec, FieldSpec, FieldSpec, FieldSpec, FieldSpec, FieldSpec, FieldSpec, FieldSpec];
550
- readonly decision: readonly [...FieldSpec[], FieldSpec, FieldSpec, FieldSpec, FieldSpec, FieldSpec];
554
+ readonly decision: readonly [...FieldSpec[], FieldSpec, FieldSpec, FieldSpec, FieldSpec, FieldSpec, FieldSpec];
551
555
  readonly issue: readonly [...FieldSpec[], FieldSpec, FieldSpec, FieldSpec, FieldSpec];
552
556
  readonly finding: readonly [...FieldSpec[], FieldSpec, FieldSpec, FieldSpec];
553
557
  readonly criterion: FieldSpec[];
package/dist/facts.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C as SURVEY_SECTION, E as WORK_STATUS, H as GRANT_FORMS, S as SURVEY_LINES, T as TASK_SECTIONS, U as GRANT_TARGET_FORMS, V as GRANT_ACTIONS, _ as PRIORITIES, a as DECISION_STATUS, b as SESSION_STATUS, c as FINDING_STATUS, d as ISSUE_SECTIONS, f as ISSUE_STATUS, g as MERGE_STATES, h as MAINLINE_STATUS, i as DECISION_SECTIONS, l as FORMAT_VERSION, m as MAINLINE_SECTIONS, n as CLOSED_STATUS, o as DEFAULT_CATEGORIES, p as LINK_RELS, r as DECIDERS, s as FINDING_SECTIONS, t as CHECKLIST_REF, u as ID_PATTERNS, w as TASK_REQUIRED_SECTIONS, x as SLUG } from "./dist-DCYzrl7J.js";
1
+ import { C as SURVEY_LINES, D as WORK_STATUS, E as TASK_SECTIONS, H as GRANT_ACTIONS, S as SLUG, T as TASK_REQUIRED_SECTIONS, U as GRANT_FORMS, W as GRANT_TARGET_FORMS, _ as MERGE_STATES, a as DECISION_SECTIONS, c as FINDING_SECTIONS, d as ID_PATTERNS, f as ISSUE_SECTIONS, g as MAINLINE_STATUS, h as MAINLINE_SECTIONS, i as DECISION_BASES, l as FINDING_STATUS, m as LINK_RELS, n as CLOSED_STATUS, o as DECISION_STATUS, p as ISSUE_STATUS, r as DECIDERS, s as DEFAULT_CATEGORIES, t as CHECKLIST_REF, u as FORMAT_VERSION, v as PRIORITIES, w as SURVEY_SECTION, x as SESSION_STATUS } from "./dist-Dy45myuN.js";
2
2
  //#region src/facts.ts
3
3
  const COMMAND_SPECS = {
4
4
  init: {
@@ -118,7 +118,7 @@ const COMMAND_SPECS = {
118
118
  needsHub: true
119
119
  },
120
120
  "new decision": {
121
- usage: "new decision <m> <slug> --title <title> [--status proposed] [--by user|ai|relay] [--affects <m/t or m/t#c>,...]",
121
+ usage: "new decision <m> <slug> --title <title> [--status proposed] [--by user|ai|relay] [--basis explicit|recommended] [--affects <m/t or m/t#c>,...]",
122
122
  summary: "Create a decision file; proposed while the question is still open",
123
123
  args: 2,
124
124
  needsHub: true
@@ -196,7 +196,7 @@ const COMMAND_SPECS = {
196
196
  needsHub: true
197
197
  },
198
198
  "decision accept": {
199
- usage: "decision accept <m/d> [--by user|ai|relay]",
199
+ usage: "decision accept <m/d> [--by user|ai|relay] [--basis explicit|recommended]",
200
200
  summary: "Settle a proposed decision; the items it affects stop waiting for it",
201
201
  args: 1,
202
202
  needsHub: true
@@ -300,6 +300,7 @@ const OPTIONS = {
300
300
  repo: { type: "string" },
301
301
  evidence: { type: "string" },
302
302
  by: { type: "string" },
303
+ basis: { type: "string" },
303
304
  port: { type: "string" },
304
305
  "no-open": {
305
306
  type: "boolean",
@@ -356,7 +357,8 @@ const STATUSES = {
356
357
  finding: FINDING_STATUS,
357
358
  session: SESSION_STATUS,
358
359
  merge: MERGE_STATES,
359
- decider: DECIDERS
360
+ decider: DECIDERS,
361
+ basis: DECISION_BASES
360
362
  };
361
363
  /** Reference formats, one example each, in the order a reader meets them. */
362
364
  const REFERENCES = [
@@ -535,6 +537,7 @@ const FIELDS = {
535
537
  field("decidedAt", false, "裁決的時間,由 CLI 寫入"),
536
538
  field("supersededBy", false, "取代它的決策,superseded 時必填"),
537
539
  field("by", false, "決策者:user、ai、relay"),
540
+ field("basis", false, "裁決方式:explicit(明確選了某個選項)、recommended(照建議預設,沒有明確選)"),
538
541
  field("affects", false, "影響的任務或 checklist 項目;待裁決時其中的項目在等它"),
539
542
  field("reversible", false, "之後能不能低成本改回來")
540
543
  ],
@@ -1,4 +1,4 @@
1
- import { H as GRANT_FORMS } from "./dist-DCYzrl7J.js";
1
+ import { U as GRANT_FORMS } from "./dist-Dy45myuN.js";
2
2
  import { closeSync, constants, fstatSync, openSync, readFileSync, realpathSync } from "node:fs";
3
3
  import { isAbsolute, join, relative, resolve } from "node:path";
4
4
  import { spawnSync } from "node:child_process";
package/dist/hooks.js CHANGED
@@ -1,5 +1,5 @@
1
- import { G as endsWithMarker, H as grantScope, I as setSessionInfo, J as appendOps, K as headerLine, L as setSessionStatus, O as sessionBriefing, P as readSession, R as settleSession, U as matchGrants, W as decorateReply, _t as worktreesOf, gt as findHubRoot, ht as currentBranch, i as hostName, it as loadHub, j as ensureSession, k as turnReminder, mt as DATA_DIR, pt as readYaml, q as mayDecorate, rt as HubError } from "./host-0_zkFbzM.js";
2
- import { D as configSchema, W as describeRequest } from "./dist-DCYzrl7J.js";
1
+ import { G as endsWithMarker, H as grantScope, I as setSessionInfo, J as appendOps, K as headerLine, L as setSessionStatus, O as sessionBriefing, P as readSession, R as settleSession, U as matchGrants, W as decorateReply, _t as worktreesOf, gt as findHubRoot, ht as currentBranch, i as hostName, it as loadHub, j as ensureSession, k as turnReminder, mt as DATA_DIR, pt as readYaml, q as mayDecorate, rt as HubError } from "./host-DkaCYnnc.js";
2
+ import { G as describeRequest, O as configSchema } from "./dist-Dy45myuN.js";
3
3
  import { resolveFixed, scanCommand, scopedCwd } from "./grant-commands.js";
4
4
  import { appendFileSync, existsSync, readFileSync } from "node:fs";
5
5
  import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
@@ -1,4 +1,4 @@
1
- import { A as formatOpsEntry, B as waitingForRef, C as SURVEY_SECTION, D as configSchema, E as WORK_STATUS, F as parseRef, G as grantCovers, I as refExample, J as parseGrantTarget, K as grantForm, L as refMainline, M as mainlineSchema, N as opsEntrySchema, O as decisionSchema, P as parseOpsLine, R as sessionSchema, S as SURVEY_LINES, T as TASK_SECTIONS, W as describeRequest, b as SESSION_STATUS, c as FINDING_STATUS, d as ISSUE_SECTIONS, g as MERGE_STATES, h as MAINLINE_STATUS, i as DECISION_SECTIONS, j as issueSchema, k as findingSchema, m as MAINLINE_SECTIONS, n as CLOSED_STATUS, o as DEFAULT_CATEGORIES, q as grantRepo, r as DECIDERS, s as FINDING_SECTIONS, t as CHECKLIST_REF, v as REF_EXAMPLES, w as TASK_REQUIRED_SECTIONS, x as SLUG, y as RESERVED_HUB_NAMES, z as taskSchema } from "./dist-DCYzrl7J.js";
1
+ import { A as findingSchema, B as taskSchema, C as SURVEY_LINES, D as WORK_STATUS, E as TASK_SECTIONS, F as parseOpsLine, G as describeRequest, I as parseRef, J as grantRepo, K as grantCovers, L as refExample, M as issueSchema, N as mainlineSchema, O as configSchema, P as opsEntrySchema, R as refMainline, S as SLUG, T as TASK_REQUIRED_SECTIONS, V as waitingForRef, Y as parseGrantTarget, _ as MERGE_STATES, a as DECISION_SECTIONS, b as RESERVED_HUB_NAMES, c as FINDING_SECTIONS, f as ISSUE_SECTIONS, g as MAINLINE_STATUS, h as MAINLINE_SECTIONS, i as DECISION_BASES, j as formatOpsEntry, k as decisionSchema, l as FINDING_STATUS, n as CLOSED_STATUS, q as grantForm, r as DECIDERS, s as DEFAULT_CATEGORIES, t as CHECKLIST_REF, w as SURVEY_SECTION, x as SESSION_STATUS, y as REF_EXAMPLES, z as sessionSchema } from "./dist-Dy45myuN.js";
2
2
  import { appendFileSync, closeSync, existsSync, lstatSync, mkdirSync, openSync, readFileSync, readdirSync, readlinkSync, realpathSync, renameSync, rmSync, statSync, symlinkSync, writeFileSync, writeSync } from "node:fs";
3
3
  import { dirname, isAbsolute, join, parse, relative, resolve, sep } from "node:path";
4
4
  import { spawn, spawnSync } from "node:child_process";
@@ -1969,6 +1969,7 @@ function createDecision(root, mainline, input) {
1969
1969
  requireSlug(input.slug);
1970
1970
  const status = requireOneOf(input.status ?? "accepted", ["proposed", "accepted"], "new decision status");
1971
1971
  const by = input.by === void 0 ? void 0 : requireOneOf(input.by, DECIDERS, "decided by");
1972
+ const basis = input.basis === void 0 ? void 0 : requireOneOf(input.basis, DECISION_BASES, "decision basis");
1972
1973
  for (const ref of input.affects ?? []) requireAffected(root, mainline, ref);
1973
1974
  return withLock(root, () => {
1974
1975
  const dir = join(mainlineDir(root, mainline), "decisions");
@@ -1982,6 +1983,7 @@ function createDecision(root, mainline, input) {
1982
1983
  status,
1983
1984
  ...status === "accepted" ? { decidedAt: at } : {},
1984
1985
  ...by ? { by } : {},
1986
+ ...basis ? { basis } : {},
1985
1987
  ...input.affects?.length ? { affects: input.affects } : {}
1986
1988
  }, "decision");
1987
1989
  const file = join(dir, `${id}-${input.slug}.md`);
@@ -2005,15 +2007,17 @@ const parseRefIn = (input) => {
2005
2007
  task: task[2]
2006
2008
  } : null;
2007
2009
  };
2008
- /** Settle a proposed decision: record who decided and when; the items it affects stop waiting for it. */
2009
- function acceptDecision(root, refInput, by, expectedVersion) {
2010
+ /** Settle a proposed decision: record who decided, how and when; the items it affects stop waiting for it. */
2011
+ function acceptDecision(root, refInput, settlement = {}, expectedVersion) {
2010
2012
  const ref = requireRef(refInput, "decision");
2011
- const decider = by === void 0 ? void 0 : requireOneOf(by, DECIDERS, "decided by");
2013
+ const decider = settlement.by === void 0 ? void 0 : requireOneOf(settlement.by, DECIDERS, "decided by");
2014
+ const basis = settlement.basis === void 0 ? void 0 : requireOneOf(settlement.basis, DECISION_BASES, "decision basis");
2012
2015
  return mutateFrontMatter(root, decisionFile(root, ref.mainline, ref.decision), decisionSchema, (d) => {
2013
2016
  if (d.status !== "proposed") throw new WriteError(`${refInput} is ${d.status}; only a proposed decision can be accepted`);
2014
2017
  d.status = "accepted";
2015
2018
  d.decidedAt = nowMinute();
2016
2019
  if (decider) d.by = decider;
2020
+ if (basis) d.basis = basis;
2017
2021
  }, expectedVersion);
2018
2022
  }
2019
2023
  function supersedeDecision(root, refInput, by, expectedVersion) {
package/dist/host.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as openInApp, c as syncHost, i as hostName, n as DEFAULT_UI_PORT, o as removeHostLink, r as caddySites, s as siteBlock, t as APP_BUNDLE_ID } from "./host-0_zkFbzM.js";
1
+ import { a as openInApp, c as syncHost, i as hostName, n as DEFAULT_UI_PORT, o as removeHostLink, r as caddySites, s as siteBlock, t as APP_BUNDLE_ID } from "./host-DkaCYnnc.js";
2
2
  export { APP_BUNDLE_ID, DEFAULT_UI_PORT, caddySites, hostName, openInApp, removeHostLink, siteBlock, syncHost };
@@ -1,4 +1,4 @@
1
- import { c as syncHost, ft as WriteError, i as hostName, mt as DATA_DIR, n as DEFAULT_UI_PORT, o as removeHostLink } from "./host-0_zkFbzM.js";
1
+ import { c as syncHost, ft as WriteError, i as hostName, mt as DATA_DIR, n as DEFAULT_UI_PORT, o as removeHostLink } from "./host-DkaCYnnc.js";
2
2
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
3
  import { join } from "node:path";
4
4
  import { spawn, spawnSync } from "node:child_process";
@@ -176,7 +176,7 @@ async function launchUi(root, hub, configured, options) {
176
176
  }
177
177
  let server;
178
178
  if (!reuse) {
179
- const { serveUi } = await import("./ui-hvirfamo.js");
179
+ const { serveUi } = await import("./ui-Do7fLlUC.js");
180
180
  server = await serveUi(root, choice.port);
181
181
  writeUiRecord(root, {
182
182
  port: choice.port,
package/dist/launch.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as portCandidates, c as watchHubGone, i as networkProbe, n as choosePort, o as readUiRecord, r as launchUi, s as startUiInBackground, t as PORT_SPAN } from "./launch-B8-NVG2g.js";
1
+ import { a as portCandidates, c as watchHubGone, i as networkProbe, n as choosePort, o as readUiRecord, r as launchUi, s as startUiInBackground, t as PORT_SPAN } from "./launch-DOX1TTGx.js";
2
2
  export { PORT_SPAN, choosePort, launchUi, networkProbe, portCandidates, readUiRecord, startUiInBackground, watchHubGone };
@@ -1,6 +1,6 @@
1
- import { B as transcriptPath, D as updateTask, F as setSessionArchived, N as loadSessions, P as readSession, S as setCriterion, T as setMainlineTitle, a as openInApp, at as dependencyGraph, b as setArchived, ct as refIndex, d as setArchivedMany, dt as ConflictError, et as setFindingArchived, ft as WriteError, it as loadHub, mt as DATA_DIR, nt as setIssueArchived, ot as mainlineEdges, st as linksInto, u as ARCHIVE_KINDS, w as setMainlineStatus, x as setChecklistItem } from "./host-0_zkFbzM.js";
1
+ import { B as transcriptPath, D as updateTask, F as setSessionArchived, N as loadSessions, P as readSession, S as setCriterion, T as setMainlineTitle, a as openInApp, at as dependencyGraph, b as setArchived, ct as refIndex, d as setArchivedMany, dt as ConflictError, et as setFindingArchived, ft as WriteError, it as loadHub, mt as DATA_DIR, nt as setIssueArchived, ot as mainlineEdges, st as linksInto, u as ARCHIVE_KINDS, w as setMainlineStatus, x as setChecklistItem } from "./host-DkaCYnnc.js";
2
2
  import { t as listProgress } from "./progress-1BfPg2zN.js";
3
- import { l as CLI_VERSION } from "./launch-B8-NVG2g.js";
3
+ import { l as CLI_VERSION } from "./launch-DOX1TTGx.js";
4
4
  import { createRequire } from "node:module";
5
5
  import { closeSync, existsSync, openSync, readFileSync, readSync, statSync, watch } from "node:fs";
6
6
  import { basename, dirname, extname, join, normalize, relative, sep } from "node:path";