@alecsibilia/luca 13.0.0-alpha.7 → 13.0.0-alpha.9

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 (55) hide show
  1. package/dist/chunks/branch.mjs +6 -6
  2. package/dist/chunks/checks.mjs +6 -6
  3. package/dist/chunks/claim-verify.mjs +1 -1
  4. package/dist/chunks/classify.mjs +1 -1
  5. package/dist/chunks/confidence.mjs +78 -8
  6. package/dist/chunks/doctor.mjs +3 -1
  7. package/dist/chunks/hook.mjs +7 -4
  8. package/dist/chunks/init.mjs +33 -3
  9. package/dist/chunks/phase.mjs +6 -6
  10. package/dist/chunks/pr-review.mjs +6 -6
  11. package/dist/chunks/preferences.mjs +6 -6
  12. package/dist/chunks/repair.mjs +1 -1
  13. package/dist/chunks/repo.mjs +6 -6
  14. package/dist/chunks/retro.mjs +5 -5
  15. package/dist/chunks/roadmap.mjs +6 -6
  16. package/dist/chunks/rules.mjs +5 -5
  17. package/dist/chunks/state.mjs +6 -6
  18. package/dist/chunks/stray-local-install.mjs +1 -1
  19. package/dist/chunks/telemetry.mjs +1 -1
  20. package/dist/chunks/todo.mjs +6 -6
  21. package/dist/chunks/vault-config-location.mjs +96 -0
  22. package/dist/chunks/vault-init.mjs +1 -1
  23. package/dist/chunks/verification.mjs +4 -4
  24. package/dist/chunks/workflow.mjs +6 -6
  25. package/dist/claude/.claude/agents/architect.md +43 -0
  26. package/dist/claude/.claude/agents/execute.md +4 -2
  27. package/dist/claude/.claude/agents/shadow-scanner.md +1 -1
  28. package/dist/claude/.claude/agents/triage.md +3 -3
  29. package/dist/claude/.claude/commands/gh-pr-address.md +6 -6
  30. package/dist/claude/.claude/commands/lu.md +30 -7
  31. package/dist/claude/.claude/commands/milestone-new.md +2 -2
  32. package/dist/claude/.claude/commands/repo-cleanup.md +2 -2
  33. package/dist/claude/.claude/hooks/context-refresher.ts +4 -1
  34. package/dist/claude/.claude/hooks/continuation-messages.ts +4 -1
  35. package/dist/claude/.claude/hooks/pipeline-guard.ts +4 -1
  36. package/dist/claude/skills/gh-issue-triage/SKILL.md +2 -2
  37. package/dist/claude/skills/gh-pr-address/SKILL.md +6 -6
  38. package/dist/claude/skills/lu/SKILL.md +59 -8
  39. package/dist/claude/skills/luca-init/SKILL.md +2 -2
  40. package/dist/claude/skills/phase-discuss/SKILL.md +11 -1
  41. package/dist/claude/skills/phase-execute/SKILL.md +13 -1
  42. package/dist/claude/skills/phase-plan/SKILL.md +15 -3
  43. package/dist/claude/skills/phase-research/SKILL.md +8 -0
  44. package/dist/claude/skills/repo-cleanup/SKILL.md +2 -2
  45. package/dist/index.mjs +1 -1
  46. package/dist/shared/{luca.BeGsLJkq.mjs → luca.8yAUP8PG.mjs} +3 -3
  47. package/dist/shared/{luca.CWsqOppt.mjs → luca.BiCFpsE9.mjs} +1 -1
  48. package/dist/shared/{luca.BV4noBW7.mjs → luca.CXJxgzAE.mjs} +2 -2
  49. package/dist/shared/{luca.ELUgu8AW.mjs → luca.Cah4kvKS.mjs} +16 -8
  50. package/dist/shared/{luca.Dn7Gbruu.mjs → luca.CgZgNO4A.mjs} +2 -2
  51. package/dist/shared/{luca.CyQeErH2.mjs → luca.CvfK4ZaL.mjs} +1 -1
  52. package/dist/shared/{luca.B8ydzQ8S.mjs → luca.DhWPHlqL.mjs} +38 -3
  53. package/dist/shared/{luca.Da5I_JVg.mjs → luca.Dtt-5Dh0.mjs} +1 -1
  54. package/package.json +4 -4
  55. package/dist/claude/skills/autopilot/SKILL.md +0 -1290
@@ -1,6 +1,6 @@
1
1
  import { defineCommand } from 'citty';
2
2
  import 'zod';
3
- import '../shared/luca.B8ydzQ8S.mjs';
3
+ import '../shared/luca.DhWPHlqL.mjs';
4
4
  import 'node:fs';
5
5
  import 'node:fs/promises';
6
6
  import 'node:path';
@@ -8,12 +8,12 @@ import 'node:crypto';
8
8
  import 'node:module';
9
9
  import 'node:url';
10
10
  import 'node:child_process';
11
- import { r as runWriteHandler, u as lucaBranchGuardTool } from '../shared/luca.ELUgu8AW.mjs';
12
- import '../shared/luca.CyQeErH2.mjs';
11
+ import { r as runWriteHandler, u as lucaBranchGuardTool } from '../shared/luca.Cah4kvKS.mjs';
12
+ import '../shared/luca.CvfK4ZaL.mjs';
13
13
  import 'node:os';
14
- import '../shared/luca.CWsqOppt.mjs';
15
- import '../shared/luca.Dn7Gbruu.mjs';
16
- import '../shared/luca.Da5I_JVg.mjs';
14
+ import '../shared/luca.BiCFpsE9.mjs';
15
+ import '../shared/luca.CgZgNO4A.mjs';
16
+ import '../shared/luca.Dtt-5Dh0.mjs';
17
17
  import '../shared/luca.CQ3g1xrD.mjs';
18
18
 
19
19
  const guardCommand = defineCommand({
@@ -1,6 +1,6 @@
1
1
  import { defineCommand } from 'citty';
2
2
  import 'zod';
3
- import '../shared/luca.B8ydzQ8S.mjs';
3
+ import '../shared/luca.DhWPHlqL.mjs';
4
4
  import 'node:fs';
5
5
  import 'node:fs/promises';
6
6
  import 'node:path';
@@ -8,12 +8,12 @@ import 'node:crypto';
8
8
  import 'node:module';
9
9
  import 'node:url';
10
10
  import 'node:child_process';
11
- import { f as readJsonPayload, r as runWriteHandler, t as lucaChecksRunTool } from '../shared/luca.ELUgu8AW.mjs';
12
- import '../shared/luca.CyQeErH2.mjs';
11
+ import { f as readJsonPayload, r as runWriteHandler, t as lucaChecksRunTool } from '../shared/luca.Cah4kvKS.mjs';
12
+ import '../shared/luca.CvfK4ZaL.mjs';
13
13
  import 'node:os';
14
- import '../shared/luca.CWsqOppt.mjs';
15
- import '../shared/luca.Dn7Gbruu.mjs';
16
- import '../shared/luca.Da5I_JVg.mjs';
14
+ import '../shared/luca.BiCFpsE9.mjs';
15
+ import '../shared/luca.CgZgNO4A.mjs';
16
+ import '../shared/luca.Dtt-5Dh0.mjs';
17
17
  import '../shared/luca.CQ3g1xrD.mjs';
18
18
 
19
19
  const runCommand = defineCommand({
@@ -1,6 +1,6 @@
1
1
  import { defineCommand } from 'citty';
2
2
  import { resolve } from 'pathe';
3
- import '../shared/luca.B8ydzQ8S.mjs';
3
+ import '../shared/luca.DhWPHlqL.mjs';
4
4
  import { readFileSync, existsSync, readdirSync, statSync } from 'node:fs';
5
5
  import 'node:fs/promises';
6
6
  import { join } from 'node:path';
@@ -1,5 +1,5 @@
1
1
  import { defineCommand } from 'citty';
2
- import { C as ClassifyComplexityInputSchema } from '../shared/luca.B8ydzQ8S.mjs';
2
+ import { C as ClassifyComplexityInputSchema } from '../shared/luca.DhWPHlqL.mjs';
3
3
  import 'node:fs';
4
4
  import 'node:fs/promises';
5
5
  import 'node:path';
@@ -1,6 +1,6 @@
1
1
  import { defineCommand } from 'citty';
2
- import '../shared/luca.B8ydzQ8S.mjs';
3
- import { l as loadCurrentState, r as resolveActiveSlug } from '../shared/luca.CWsqOppt.mjs';
2
+ import '../shared/luca.DhWPHlqL.mjs';
3
+ import { l as loadCurrentState, r as resolveActiveSlug } from '../shared/luca.BiCFpsE9.mjs';
4
4
  import 'node:fs';
5
5
  import 'node:fs/promises';
6
6
  import 'node:path';
@@ -8,16 +8,47 @@ import 'node:crypto';
8
8
  import 'node:module';
9
9
  import 'node:url';
10
10
  import 'node:child_process';
11
- import { b as renderConfidenceJournalMarkdown, r as readConfidenceJournal, g as getConfidenceSummary } from '../shared/luca.Dn7Gbruu.mjs';
11
+ import { r as readConfidenceJournal, b as renderConfidenceJournalMarkdown, g as getConfidenceSummary } from '../shared/luca.CgZgNO4A.mjs';
12
12
  import { l as logger } from '../shared/luca.dM-MKlNE.mjs';
13
13
  import 'zod';
14
- import { f as readJsonPayload, r as runWriteHandler, w as lucaConfidenceLogTool } from '../shared/luca.ELUgu8AW.mjs';
15
- import '../shared/luca.CyQeErH2.mjs';
14
+ import { f as readJsonPayload, r as runWriteHandler, w as lucaConfidenceLogTool } from '../shared/luca.Cah4kvKS.mjs';
15
+ import '../shared/luca.CvfK4ZaL.mjs';
16
16
  import 'node:os';
17
- import '../shared/luca.Da5I_JVg.mjs';
17
+ import '../shared/luca.Dtt-5Dh0.mjs';
18
18
  import 'consola';
19
19
  import '../shared/luca.CQ3g1xrD.mjs';
20
20
 
21
+ function selectConfidenceGateActions(entries) {
22
+ const auto = [];
23
+ const research = [];
24
+ const ask = [];
25
+ for (const entry of entries) {
26
+ if (entry.resolution) {
27
+ if (entry.resolution === "auto") auto.push(entry);
28
+ else if (entry.resolution === "research") research.push(entry);
29
+ else if (entry.resolution === "ask") ask.push(entry);
30
+ else {
31
+ entry.resolution;
32
+ ask.push(entry);
33
+ }
34
+ } else if (entry.confidence === "high") {
35
+ auto.push(entry);
36
+ } else if (entry.confidence === "medium") {
37
+ auto.push(entry);
38
+ } else if (entry.confidence === "low" && entry.researchable === true) {
39
+ research.push(entry);
40
+ } else {
41
+ ask.push(entry);
42
+ }
43
+ }
44
+ return {
45
+ auto,
46
+ research,
47
+ ask,
48
+ counts: { auto: auto.length, research: research.length, ask: ask.length }
49
+ };
50
+ }
51
+
21
52
  async function resolveSlug(opts) {
22
53
  if (opts.explicit) return opts.explicit;
23
54
  const state = await loadCurrentState({ cwd: opts.cwd });
@@ -87,6 +118,14 @@ const logCommand = defineCommand({
87
118
  "review-hint": {
88
119
  type: "string",
89
120
  description: "Optional. Suggested focus area for a human reviewer."
121
+ },
122
+ researchable: {
123
+ type: "boolean",
124
+ description: "Optional. Set true when the ambiguity is factual and resolvable by automated research; absent/false means human judgment is required (gate routes to ask)."
125
+ },
126
+ resolution: {
127
+ type: "string",
128
+ description: "Optional. Explicit gate routing override: auto | research | ask. Overrides confidence-derived bucketing when set."
90
129
  }
91
130
  },
92
131
  async run({ args }) {
@@ -101,6 +140,13 @@ const logCommand = defineCommand({
101
140
  }
102
141
  payload = fromFile;
103
142
  } else {
143
+ const resolution = args.resolution;
144
+ if (resolution !== void 0 && resolution !== "auto" && resolution !== "research" && resolution !== "ask") {
145
+ logger.error(
146
+ `luca confidence log: --resolution must be one of: auto, research, ask (got "${resolution}"). Run \`luca confidence log --help\` for usage.`
147
+ );
148
+ process.exit(1);
149
+ }
104
150
  payload = {
105
151
  phase: args.phase,
106
152
  wave: args.wave !== void 0 ? Number(args.wave) : void 0,
@@ -112,7 +158,9 @@ const logCommand = defineCommand({
112
158
  reasoning: args.reasoning,
113
159
  risk: args.risk,
114
160
  files: splitCsv(args.files),
115
- ...args["review-hint"] !== void 0 ? { reviewHint: args["review-hint"] } : {}
161
+ ...args["review-hint"] !== void 0 ? { reviewHint: args["review-hint"] } : {},
162
+ ...args.researchable !== void 0 ? { researchable: args.researchable } : {},
163
+ ...resolution !== void 0 ? { resolution } : {}
116
164
  };
117
165
  }
118
166
  await runWriteHandler(
@@ -183,6 +231,27 @@ const renderCommand = defineCommand({
183
231
  `);
184
232
  }
185
233
  });
234
+ const gateCommand = defineCommand({
235
+ meta: {
236
+ name: "gate",
237
+ description: "Bucket a phase's confidence entries into gate actions and emit a JSON object shaped { auto: [...], research: [...], ask: [...], counts: { auto, research, ask } } to stdout. Each entry lands in exactly one bucket: explicit resolution overrides first, then high/medium \u2192 auto, low+researchable \u2192 research, otherwise \u2192 ask (fail-toward-human)."
238
+ },
239
+ args: {
240
+ slug: {
241
+ type: "string",
242
+ description: "Phase slug (defaults to active phase)."
243
+ }
244
+ },
245
+ async run({ args }) {
246
+ const cwd = process.cwd();
247
+ const slug = await resolveSlug({ explicit: args.slug, cwd });
248
+ const actions = selectConfidenceGateActions(
249
+ readConfidenceJournal({ cwd, slug })
250
+ );
251
+ process.stdout.write(`${JSON.stringify(actions, null, 2)}
252
+ `);
253
+ }
254
+ });
186
255
  const confidenceCommand = defineCommand({
187
256
  meta: {
188
257
  name: "confidence",
@@ -192,7 +261,8 @@ const confidenceCommand = defineCommand({
192
261
  log: logCommand,
193
262
  read: readCommand,
194
263
  summary: summaryCommand,
195
- render: renderCommand
264
+ render: renderCommand,
265
+ gate: gateCommand
196
266
  }
197
267
  });
198
268
 
@@ -13,6 +13,7 @@ async function executeDoctor(options = {}) {
13
13
  const { legacyPackageCheck } = await import('./legacy-package.mjs');
14
14
  const { strayLocalInstallCheck } = await import('./stray-local-install.mjs');
15
15
  const { configVersionSkewCheck } = await import('./config-version-skew.mjs');
16
+ const { vaultConfigLocationCheck } = await import('./vault-config-location.mjs');
16
17
  const allChecks = [
17
18
  // Prerequisites
18
19
  bunRuntimeCheck,
@@ -24,7 +25,8 @@ async function executeDoctor(options = {}) {
24
25
  legacyPackageCheck,
25
26
  // Project (cwd-dependent)
26
27
  strayLocalInstallCheck,
27
- configVersionSkewCheck
28
+ configVersionSkewCheck,
29
+ vaultConfigLocationCheck
28
30
  ];
29
31
  const checks = scope ? allChecks.filter((check) => check.scope === scope) : allChecks;
30
32
  if (checks.length === 0) {
@@ -1,11 +1,11 @@
1
1
  import { defineCommand } from 'citty';
2
- import { c as coarsePhaseOf, t as toLucaRelative, a as classifyWritePath, A as AUDIT_PATH_PATTERN, W as WAVE_FILE_RE } from '../shared/luca.B8ydzQ8S.mjs';
3
- import { l as loadCurrentState, r as resolveActiveSlug } from '../shared/luca.CWsqOppt.mjs';
2
+ import { c as coarsePhaseOf, t as toLucaRelative, a as classifyWritePath, b as TMP_PATH_PATTERN, A as AUDIT_PATH_PATTERN, W as WAVE_FILE_RE } from '../shared/luca.DhWPHlqL.mjs';
3
+ import { l as loadCurrentState, r as resolveActiveSlug } from '../shared/luca.BiCFpsE9.mjs';
4
4
  import 'node:fs';
5
5
  import 'node:fs/promises';
6
6
  import 'node:path';
7
- import { l as lucaStateClaimOwnerTool, S as STEP_ARTIFACTS } from '../shared/luca.CyQeErH2.mjs';
8
- import { p as phasePathFor } from '../shared/luca.Da5I_JVg.mjs';
7
+ import { l as lucaStateClaimOwnerTool, S as STEP_ARTIFACTS } from '../shared/luca.CvfK4ZaL.mjs';
8
+ import { p as phasePathFor } from '../shared/luca.Dtt-5Dh0.mjs';
9
9
  import 'node:crypto';
10
10
  import 'node:module';
11
11
  import 'node:url';
@@ -678,6 +678,9 @@ const FIXED_PHASE_FILE_ARTIFACTS = /* @__PURE__ */ new Set([
678
678
  "execute/progress"
679
679
  ]);
680
680
  function artifactPathGate(targetPath, pipelineStep, state) {
681
+ if (TMP_PATH_PATTERN.test(targetPath)) {
682
+ return { kind: "allow" };
683
+ }
681
684
  const legalArtifacts = STEP_ARTIFACTS[pipelineStep];
682
685
  if (legalArtifacts.length === 0) {
683
686
  return {
@@ -3,7 +3,7 @@ import { defineCommand, runMain } from 'citty';
3
3
  import { existsSync, chmodSync } from 'node:fs';
4
4
  import { mkdir, readFile, writeFile, readdir, copyFile } from 'node:fs/promises';
5
5
  import { join, dirname, delimiter } from 'node:path';
6
- import { l as lucaStateSchema } from '../shared/luca.B8ydzQ8S.mjs';
6
+ import { l as lucaStateSchema } from '../shared/luca.DhWPHlqL.mjs';
7
7
  import 'node:crypto';
8
8
  import 'node:module';
9
9
  import 'node:url';
@@ -45,8 +45,12 @@ async function writeProjectSkeleton(opts) {
45
45
  contents: JSON.stringify(
46
46
  {
47
47
  lucaVersion: LUCA_VERSION,
48
- vault: null,
49
- oversight: "full-auto"
48
+ oversight: "full-auto",
49
+ // Canonical vault location is `muninn.vault` (see
50
+ // resolveRepoVault + the vault-routing rule). `luca
51
+ // vault:init` fills this in later; the placeholder makes the
52
+ // canonical home discoverable in a fresh config.
53
+ muninn: { vault: null }
50
54
  },
51
55
  null,
52
56
  2
@@ -54,6 +58,32 @@ async function writeProjectSkeleton(opts) {
54
58
  force: opts.force ?? false,
55
59
  log
56
60
  });
61
+ await ensureLucaGitignore(opts.cwd, log);
62
+ }
63
+ const LUCA_GITIGNORE_ENTRIES = [
64
+ ".luca/state.json",
65
+ ".luca/state.json.lock",
66
+ ".luca/lock.json",
67
+ ".luca/ledger.jsonl",
68
+ ".luca/telemetry/",
69
+ ".luca/tmp/"
70
+ ];
71
+ async function ensureLucaGitignore(cwd, log = () => {
72
+ }) {
73
+ const gitignorePath = join(cwd, ".gitignore");
74
+ const content = existsSync(gitignorePath) ? await readFile(gitignorePath, "utf-8") : "";
75
+ const present = new Set(content.split("\n").map((line) => line.trim()));
76
+ const missing = LUCA_GITIGNORE_ENTRIES.filter((entry) => !present.has(entry));
77
+ if (missing.length === 0) return;
78
+ const freshBlock = missing.length === LUCA_GITIGNORE_ENTRIES.length;
79
+ const header = "# Luca workflow runtime state under the .luca/ contract.\n# Committed: config.json, roadmap.md, milestones/, archive/, phases/<slug>/{plan,research,context,verify,learn,audits/*}\n# Ignored: per-run state, locks, ledger, telemetry, ephemeral CLI-handoff scratch\n";
80
+ const body = (freshBlock ? header : "") + missing.join("\n") + "\n";
81
+ const leadingGap = content === "" || content.endsWith("\n") ? "" : "\n";
82
+ const blockSeparator = content === "" ? "" : "\n";
83
+ await writeFile(gitignorePath, content + leadingGap + blockSeparator + body);
84
+ log(
85
+ ` write: ${gitignorePath} (+${missing.length} .luca/ ignore${missing.length === 1 ? "" : "s"})`
86
+ );
57
87
  }
58
88
  async function isActiveState(statePath) {
59
89
  try {
@@ -1,6 +1,6 @@
1
1
  import { defineCommand } from 'citty';
2
2
  import 'zod';
3
- import '../shared/luca.B8ydzQ8S.mjs';
3
+ import '../shared/luca.DhWPHlqL.mjs';
4
4
  import 'node:fs';
5
5
  import 'node:fs/promises';
6
6
  import 'node:path';
@@ -8,12 +8,12 @@ import 'node:crypto';
8
8
  import 'node:module';
9
9
  import 'node:url';
10
10
  import 'node:child_process';
11
- import { r as runWriteHandler, c as lucaPhaseCurrentTool, d as lucaPhaseAdvanceTool, e as lucaPhaseArchiveTool } from '../shared/luca.ELUgu8AW.mjs';
12
- import '../shared/luca.CyQeErH2.mjs';
11
+ import { r as runWriteHandler, c as lucaPhaseCurrentTool, d as lucaPhaseAdvanceTool, e as lucaPhaseArchiveTool } from '../shared/luca.Cah4kvKS.mjs';
12
+ import '../shared/luca.CvfK4ZaL.mjs';
13
13
  import 'node:os';
14
- import '../shared/luca.CWsqOppt.mjs';
15
- import '../shared/luca.Dn7Gbruu.mjs';
16
- import '../shared/luca.Da5I_JVg.mjs';
14
+ import '../shared/luca.BiCFpsE9.mjs';
15
+ import '../shared/luca.CgZgNO4A.mjs';
16
+ import '../shared/luca.Dtt-5Dh0.mjs';
17
17
  import '../shared/luca.CQ3g1xrD.mjs';
18
18
 
19
19
  const currentCommand = defineCommand({
@@ -1,6 +1,6 @@
1
1
  import { defineCommand } from 'citty';
2
2
  import 'zod';
3
- import '../shared/luca.B8ydzQ8S.mjs';
3
+ import '../shared/luca.DhWPHlqL.mjs';
4
4
  import 'node:fs';
5
5
  import 'node:fs/promises';
6
6
  import 'node:path';
@@ -8,12 +8,12 @@ import 'node:crypto';
8
8
  import 'node:module';
9
9
  import 'node:url';
10
10
  import 'node:child_process';
11
- import { f as readJsonPayload, r as runWriteHandler, o as lucaPrReviewDetectConvergenceTool, p as lucaPrReviewFilterStaleTool, q as lucaPrReviewRegressionCheckTool } from '../shared/luca.ELUgu8AW.mjs';
12
- import '../shared/luca.CyQeErH2.mjs';
11
+ import { f as readJsonPayload, r as runWriteHandler, o as lucaPrReviewDetectConvergenceTool, p as lucaPrReviewFilterStaleTool, q as lucaPrReviewRegressionCheckTool } from '../shared/luca.Cah4kvKS.mjs';
12
+ import '../shared/luca.CvfK4ZaL.mjs';
13
13
  import 'node:os';
14
- import '../shared/luca.CWsqOppt.mjs';
15
- import '../shared/luca.Dn7Gbruu.mjs';
16
- import '../shared/luca.Da5I_JVg.mjs';
14
+ import '../shared/luca.BiCFpsE9.mjs';
15
+ import '../shared/luca.CgZgNO4A.mjs';
16
+ import '../shared/luca.Dtt-5Dh0.mjs';
17
17
  import '../shared/luca.CQ3g1xrD.mjs';
18
18
 
19
19
  const filterStaleCommand = defineCommand({
@@ -1,6 +1,6 @@
1
1
  import { defineCommand } from 'citty';
2
2
  import 'zod';
3
- import '../shared/luca.B8ydzQ8S.mjs';
3
+ import '../shared/luca.DhWPHlqL.mjs';
4
4
  import 'node:fs';
5
5
  import 'node:fs/promises';
6
6
  import 'node:path';
@@ -8,12 +8,12 @@ import 'node:crypto';
8
8
  import 'node:module';
9
9
  import 'node:url';
10
10
  import 'node:child_process';
11
- import { f as readJsonPayload, r as runWriteHandler, i as lucaPreferencesReadTool, j as lucaPreferencesWriteTool } from '../shared/luca.ELUgu8AW.mjs';
12
- import '../shared/luca.CyQeErH2.mjs';
11
+ import { f as readJsonPayload, r as runWriteHandler, i as lucaPreferencesReadTool, j as lucaPreferencesWriteTool } from '../shared/luca.Cah4kvKS.mjs';
12
+ import '../shared/luca.CvfK4ZaL.mjs';
13
13
  import 'node:os';
14
- import '../shared/luca.CWsqOppt.mjs';
15
- import '../shared/luca.Dn7Gbruu.mjs';
16
- import '../shared/luca.Da5I_JVg.mjs';
14
+ import '../shared/luca.BiCFpsE9.mjs';
15
+ import '../shared/luca.CgZgNO4A.mjs';
16
+ import '../shared/luca.Dtt-5Dh0.mjs';
17
17
  import '../shared/luca.CQ3g1xrD.mjs';
18
18
 
19
19
  const readCommand = defineCommand({
@@ -2,7 +2,7 @@ import { defineCommand } from 'citty';
2
2
  import { existsSync } from 'node:fs';
3
3
  import { readFile, rm } from 'node:fs/promises';
4
4
  import { join } from 'node:path';
5
- import { l as lucaStateSchema } from '../shared/luca.B8ydzQ8S.mjs';
5
+ import { l as lucaStateSchema } from '../shared/luca.DhWPHlqL.mjs';
6
6
  import 'node:crypto';
7
7
  import 'node:module';
8
8
  import 'node:url';
@@ -1,6 +1,6 @@
1
1
  import { defineCommand } from 'citty';
2
2
  import 'zod';
3
- import '../shared/luca.B8ydzQ8S.mjs';
3
+ import '../shared/luca.DhWPHlqL.mjs';
4
4
  import 'node:fs';
5
5
  import 'node:fs/promises';
6
6
  import 'node:path';
@@ -8,12 +8,12 @@ import 'node:crypto';
8
8
  import 'node:module';
9
9
  import 'node:url';
10
10
  import 'node:child_process';
11
- import { f as readJsonPayload, r as runWriteHandler, s as lucaRepoCleanupApplyTool } from '../shared/luca.ELUgu8AW.mjs';
12
- import '../shared/luca.CyQeErH2.mjs';
11
+ import { f as readJsonPayload, r as runWriteHandler, s as lucaRepoCleanupApplyTool } from '../shared/luca.Cah4kvKS.mjs';
12
+ import '../shared/luca.CvfK4ZaL.mjs';
13
13
  import 'node:os';
14
- import '../shared/luca.CWsqOppt.mjs';
15
- import '../shared/luca.Dn7Gbruu.mjs';
16
- import '../shared/luca.Da5I_JVg.mjs';
14
+ import '../shared/luca.BiCFpsE9.mjs';
15
+ import '../shared/luca.CgZgNO4A.mjs';
16
+ import '../shared/luca.Dtt-5Dh0.mjs';
17
17
  import '../shared/luca.CQ3g1xrD.mjs';
18
18
 
19
19
  const cleanupApplyCommand = defineCommand({
@@ -1,5 +1,5 @@
1
1
  import { defineCommand } from 'citty';
2
- import '../shared/luca.B8ydzQ8S.mjs';
2
+ import '../shared/luca.DhWPHlqL.mjs';
3
3
  import 'node:fs';
4
4
  import 'node:fs/promises';
5
5
  import 'node:path';
@@ -7,13 +7,13 @@ import 'node:crypto';
7
7
  import 'node:module';
8
8
  import 'node:url';
9
9
  import 'node:child_process';
10
- import { a as analyzeRun, g as gatherRunArtifacts, r as renderPostmortemMarkdown, c as computePostmortemExitCode } from '../shared/luca.BeGsLJkq.mjs';
11
- import { l as listRuns } from '../shared/luca.Dn7Gbruu.mjs';
10
+ import { a as analyzeRun, g as gatherRunArtifacts, r as renderPostmortemMarkdown, c as computePostmortemExitCode } from '../shared/luca.8yAUP8PG.mjs';
11
+ import { l as listRuns } from '../shared/luca.CgZgNO4A.mjs';
12
12
  import { l as logger } from '../shared/luca.dM-MKlNE.mjs';
13
13
  import 'zod';
14
14
  import 'node:os';
15
- import '../shared/luca.BV4noBW7.mjs';
16
- import '../shared/luca.Da5I_JVg.mjs';
15
+ import '../shared/luca.CXJxgzAE.mjs';
16
+ import '../shared/luca.Dtt-5Dh0.mjs';
17
17
  import 'pathe';
18
18
  import 'consola';
19
19
 
@@ -1,6 +1,6 @@
1
1
  import { defineCommand } from 'citty';
2
2
  import 'zod';
3
- import '../shared/luca.B8ydzQ8S.mjs';
3
+ import '../shared/luca.DhWPHlqL.mjs';
4
4
  import 'node:fs';
5
5
  import 'node:fs/promises';
6
6
  import 'node:path';
@@ -8,12 +8,12 @@ import 'node:crypto';
8
8
  import 'node:module';
9
9
  import 'node:url';
10
10
  import 'node:child_process';
11
- import { f as readJsonPayload, r as runWriteHandler, g as lucaRoadmapReadTool, h as lucaRoadmapCreateTool } from '../shared/luca.ELUgu8AW.mjs';
12
- import '../shared/luca.CyQeErH2.mjs';
11
+ import { f as readJsonPayload, r as runWriteHandler, g as lucaRoadmapReadTool, h as lucaRoadmapCreateTool } from '../shared/luca.Cah4kvKS.mjs';
12
+ import '../shared/luca.CvfK4ZaL.mjs';
13
13
  import 'node:os';
14
- import '../shared/luca.CWsqOppt.mjs';
15
- import '../shared/luca.Dn7Gbruu.mjs';
16
- import '../shared/luca.Da5I_JVg.mjs';
14
+ import '../shared/luca.BiCFpsE9.mjs';
15
+ import '../shared/luca.CgZgNO4A.mjs';
16
+ import '../shared/luca.Dtt-5Dh0.mjs';
17
17
  import '../shared/luca.CQ3g1xrD.mjs';
18
18
 
19
19
  const readCommand = defineCommand({
@@ -1,6 +1,6 @@
1
1
  import { defineCommand } from 'citty';
2
2
  import { join as join$1 } from 'pathe';
3
- import '../shared/luca.B8ydzQ8S.mjs';
3
+ import '../shared/luca.DhWPHlqL.mjs';
4
4
  import { existsSync, readdirSync, statSync, readFileSync } from 'node:fs';
5
5
  import 'node:fs/promises';
6
6
  import { isAbsolute, resolve, join, extname } from 'node:path';
@@ -8,13 +8,13 @@ import 'node:crypto';
8
8
  import { createRequire } from 'node:module';
9
9
  import { pathToFileURL } from 'node:url';
10
10
  import 'node:child_process';
11
- import { a as analyzeRun, g as gatherRunArtifacts } from '../shared/luca.BeGsLJkq.mjs';
12
- import { l as listRuns } from '../shared/luca.Dn7Gbruu.mjs';
11
+ import { a as analyzeRun, g as gatherRunArtifacts } from '../shared/luca.8yAUP8PG.mjs';
12
+ import { l as listRuns } from '../shared/luca.CgZgNO4A.mjs';
13
13
  import { l as logger } from '../shared/luca.dM-MKlNE.mjs';
14
14
  import 'zod';
15
15
  import 'node:os';
16
- import '../shared/luca.BV4noBW7.mjs';
17
- import '../shared/luca.Da5I_JVg.mjs';
16
+ import '../shared/luca.CXJxgzAE.mjs';
17
+ import '../shared/luca.Dtt-5Dh0.mjs';
18
18
  import 'consola';
19
19
 
20
20
  let tsModuleCache = void 0;
@@ -1,6 +1,6 @@
1
1
  import { defineCommand } from 'citty';
2
2
  import 'zod';
3
- import '../shared/luca.B8ydzQ8S.mjs';
3
+ import '../shared/luca.DhWPHlqL.mjs';
4
4
  import 'node:fs';
5
5
  import 'node:fs/promises';
6
6
  import 'node:path';
@@ -8,12 +8,12 @@ import 'node:crypto';
8
8
  import 'node:module';
9
9
  import 'node:url';
10
10
  import 'node:child_process';
11
- import { r as runWriteHandler, l as lucaStateSetCurrentPhaseTool, a as lucaStateAdvanceTool, b as lucaStateReadTool } from '../shared/luca.ELUgu8AW.mjs';
12
- import { l as lucaStateClaimOwnerTool } from '../shared/luca.CyQeErH2.mjs';
11
+ import { r as runWriteHandler, l as lucaStateSetCurrentPhaseTool, a as lucaStateAdvanceTool, b as lucaStateReadTool } from '../shared/luca.Cah4kvKS.mjs';
12
+ import { l as lucaStateClaimOwnerTool } from '../shared/luca.CvfK4ZaL.mjs';
13
13
  import 'node:os';
14
- import '../shared/luca.CWsqOppt.mjs';
15
- import '../shared/luca.Dn7Gbruu.mjs';
16
- import '../shared/luca.Da5I_JVg.mjs';
14
+ import '../shared/luca.BiCFpsE9.mjs';
15
+ import '../shared/luca.CgZgNO4A.mjs';
16
+ import '../shared/luca.Dtt-5Dh0.mjs';
17
17
  import '../shared/luca.CQ3g1xrD.mjs';
18
18
 
19
19
  const readCommand = defineCommand({
@@ -1,7 +1,7 @@
1
1
  import { existsSync, lstatSync } from 'node:fs';
2
2
  import { rm, writeFile, readdir, rmdir } from 'node:fs/promises';
3
3
  import { join } from 'node:path';
4
- import '../shared/luca.B8ydzQ8S.mjs';
4
+ import '../shared/luca.DhWPHlqL.mjs';
5
5
  import 'node:crypto';
6
6
  import 'node:module';
7
7
  import 'node:url';
@@ -1,5 +1,5 @@
1
1
  import { defineCommand } from 'citty';
2
- import { R as RunIdSchema, L as LUCA_DIR_ROOT, T as TelemetryRecordSchema } from '../shared/luca.B8ydzQ8S.mjs';
2
+ import { R as RunIdSchema, L as LUCA_DIR_ROOT, T as TelemetryRecordSchema } from '../shared/luca.DhWPHlqL.mjs';
3
3
  import { mkdirSync, appendFileSync } from 'node:fs';
4
4
  import 'node:fs/promises';
5
5
  import { join, dirname } from 'node:path';
@@ -1,6 +1,6 @@
1
1
  import { defineCommand } from 'citty';
2
2
  import 'zod';
3
- import '../shared/luca.B8ydzQ8S.mjs';
3
+ import '../shared/luca.DhWPHlqL.mjs';
4
4
  import 'node:fs';
5
5
  import 'node:fs/promises';
6
6
  import 'node:path';
@@ -8,12 +8,12 @@ import 'node:crypto';
8
8
  import 'node:module';
9
9
  import 'node:url';
10
10
  import 'node:child_process';
11
- import { f as readJsonPayload, r as runWriteHandler, k as lucaTodoUpdateTool, m as lucaTodoListTool, n as lucaTodoAddTool } from '../shared/luca.ELUgu8AW.mjs';
12
- import '../shared/luca.CyQeErH2.mjs';
11
+ import { f as readJsonPayload, r as runWriteHandler, k as lucaTodoUpdateTool, m as lucaTodoListTool, n as lucaTodoAddTool } from '../shared/luca.Cah4kvKS.mjs';
12
+ import '../shared/luca.CvfK4ZaL.mjs';
13
13
  import 'node:os';
14
- import '../shared/luca.CWsqOppt.mjs';
15
- import '../shared/luca.Dn7Gbruu.mjs';
16
- import '../shared/luca.Da5I_JVg.mjs';
14
+ import '../shared/luca.BiCFpsE9.mjs';
15
+ import '../shared/luca.CgZgNO4A.mjs';
16
+ import '../shared/luca.Dtt-5Dh0.mjs';
17
17
  import '../shared/luca.CQ3g1xrD.mjs';
18
18
 
19
19
  const addCommand = defineCommand({