archondev 2.19.41 → 2.19.42

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.
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  listLocalAtoms,
8
8
  loadAtom
9
- } from "./chunk-M63U52NF.js";
9
+ } from "./chunk-RH64CSQU.js";
10
10
  import {
11
11
  loadConfig
12
12
  } from "./chunk-SVU7MLG6.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listLocalAtoms
3
- } from "./chunk-M63U52NF.js";
3
+ } from "./chunk-RH64CSQU.js";
4
4
 
5
5
  // src/cli/list.ts
6
6
  import chalk from "chalk";
@@ -7,7 +7,7 @@ import {
7
7
  UsageRecorder,
8
8
  handleInsufficientCreditsRecovery,
9
9
  loadAtom
10
- } from "./chunk-M63U52NF.js";
10
+ } from "./chunk-RH64CSQU.js";
11
11
  import {
12
12
  transitionAtom
13
13
  } from "./chunk-WGLVDEZC.js";
@@ -4832,7 +4832,7 @@ async function attemptPathScopeAutoRecovery(atom, cwd, parseSchema, options) {
4832
4832
  if (allowedPaths.length === 0) {
4833
4833
  return false;
4834
4834
  }
4835
- const { listLocalAtoms, plan } = await import("./plan-6FM5N36D.js");
4835
+ const { listLocalAtoms, plan } = await import("./plan-I3P6U2ZM.js");
4836
4836
  const before = await listLocalAtoms();
4837
4837
  const recoveryStartedAt = Date.now();
4838
4838
  const recoverySource = atom.description ?? atom.title;
@@ -4900,7 +4900,7 @@ async function execute(atomId, options) {
4900
4900
  process.exit(1);
4901
4901
  };
4902
4902
  if (options.parallel && options.parallel.length > 0) {
4903
- const { parallelExecute } = await import("./parallel-V2OGLOQH.js");
4903
+ const { parallelExecute } = await import("./parallel-5UP6URF2.js");
4904
4904
  const allAtomIds = [atomId, ...options.parallel];
4905
4905
  await parallelExecute(allAtomIds, { skipGates: options.skipGates === true });
4906
4906
  return;
@@ -1519,14 +1519,17 @@ function resolveContentOutputTargets(description, referencedFiles, deliverableTa
1519
1519
  }
1520
1520
  function deriveDefaultContentOutputPath(description, referencedFiles) {
1521
1521
  const sampleSuffix = /\b(sample|first lesson)\b/i.test(description) ? ".sample-capsule" : ".capsule";
1522
- const primaryRef = referencedFiles.find((ref) => /\.(md|txt|markdown)$/i.test(ref));
1522
+ const preferredRef = referencedFiles.find(
1523
+ (ref) => /^(daily-exercises|curriculum|research)\//i.test(ref) && /\.(md|txt|markdown)$/i.test(ref)
1524
+ );
1525
+ const primaryRef = preferredRef ?? referencedFiles.find((ref) => /\.(md|txt|markdown)$/i.test(ref));
1523
1526
  if (!primaryRef) {
1524
- return `capsule-output${sampleSuffix}.md`;
1527
+ return `daily-exercises/capsule-output${sampleSuffix}.md`;
1525
1528
  }
1526
1529
  const baseDir = dirname(primaryRef);
1527
1530
  const fileBase = basename(primaryRef, extname(primaryRef));
1528
1531
  const outName = `${fileBase}${sampleSuffix}.md`;
1529
- const output = baseDir === "." ? outName : join(baseDir, outName);
1532
+ const output = baseDir === "." ? `daily-exercises/${outName}` : join(baseDir, outName);
1530
1533
  return output.replace(/\\/g, "/");
1531
1534
  }
1532
1535
  function extractReferencedFiles(description) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  loadAtom
3
- } from "./chunk-M63U52NF.js";
3
+ } from "./chunk-RH64CSQU.js";
4
4
 
5
5
  // src/cli/show.ts
6
6
  import chalk from "chalk";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  execute
3
- } from "./chunk-AZ6Q26DN.js";
3
+ } from "./chunk-O22UMAM5.js";
4
4
  import "./chunk-EBHHIUCB.js";
5
- import "./chunk-M63U52NF.js";
5
+ import "./chunk-RH64CSQU.js";
6
6
  import "./chunk-WGLVDEZC.js";
7
7
  import "./chunk-3MZOEZUH.js";
8
8
  import "./chunk-F7R3QKHP.js";
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-6URKZ7NB.js";
14
14
  import {
15
15
  show
16
- } from "./chunk-VHKKRWDF.js";
16
+ } from "./chunk-RLENHKO4.js";
17
17
  import {
18
18
  bugReport
19
19
  } from "./chunk-AHK2ITJX.js";
@@ -50,13 +50,13 @@ import {
50
50
  parallelRunWaves,
51
51
  parallelSchedule,
52
52
  parallelStatus
53
- } from "./chunk-ZA43HOLZ.js";
53
+ } from "./chunk-JH3QUPQD.js";
54
54
  import {
55
55
  DependencyParser,
56
56
  EnvironmentConfigLoader,
57
57
  EnvironmentValidator,
58
58
  execute
59
- } from "./chunk-AZ6Q26DN.js";
59
+ } from "./chunk-O22UMAM5.js";
60
60
  import {
61
61
  cloudCancel,
62
62
  cloudLogs,
@@ -64,12 +64,12 @@ import {
64
64
  } from "./chunk-EBHHIUCB.js";
65
65
  import {
66
66
  list
67
- } from "./chunk-Q2PJ7JSI.js";
67
+ } from "./chunk-MQKPOULB.js";
68
68
  import {
69
69
  listLocalAtoms,
70
70
  loadAtom,
71
71
  plan
72
- } from "./chunk-M63U52NF.js";
72
+ } from "./chunk-RH64CSQU.js";
73
73
  import "./chunk-WGLVDEZC.js";
74
74
  import "./chunk-3MZOEZUH.js";
75
75
  import {
@@ -3255,7 +3255,7 @@ async function runExploreFlow(cwd, followUpInput, options = {}) {
3255
3255
  case "1": {
3256
3256
  const description = await promptWithCommands("Describe what you want to do", { allowMultiline: true });
3257
3257
  if (description.trim()) {
3258
- const { plan: plan2 } = await import("./plan-6FM5N36D.js");
3258
+ const { plan: plan2 } = await import("./plan-I3P6U2ZM.js");
3259
3259
  await plan2(description, { conversational: true });
3260
3260
  }
3261
3261
  await showMainMenu();
@@ -3500,7 +3500,7 @@ ${state.forbiddenPatterns?.length ? `- **Forbidden patterns:** ${state.forbidden
3500
3500
  const hintedTask = initialTaskHint?.trim() ?? "";
3501
3501
  if (hintedTask) {
3502
3502
  console.log(chalk5.dim("Using your request above as the first task.\n"));
3503
- const { plan: plan2 } = await import("./plan-6FM5N36D.js");
3503
+ const { plan: plan2 } = await import("./plan-I3P6U2ZM.js");
3504
3504
  await plan2(hintedTask, { conversational: true });
3505
3505
  return;
3506
3506
  }
@@ -3525,7 +3525,7 @@ ${state.forbiddenPatterns?.length ? `- **Forbidden patterns:** ${state.forbidden
3525
3525
  description = continueAnswer.trim();
3526
3526
  }
3527
3527
  if (description.trim()) {
3528
- const { plan: plan2 } = await import("./plan-6FM5N36D.js");
3528
+ const { plan: plan2 } = await import("./plan-I3P6U2ZM.js");
3529
3529
  await plan2(description, { conversational: true });
3530
3530
  }
3531
3531
  }
@@ -3689,7 +3689,7 @@ async function handleAgentConversationInput(cwd, input) {
3689
3689
  pendingAnalysisCapsuleCount = null;
3690
3690
  const enrichedRequest = enrichApprovedAnalysisRequest(request, reviewedFiles, capsuleCount);
3691
3691
  console.log(chalk5.dim("\n> Great. Creating a governed task from the approved analysis plan.\n"));
3692
- const { plan: plan3 } = await import("./plan-6FM5N36D.js");
3692
+ const { plan: plan3 } = await import("./plan-I3P6U2ZM.js");
3693
3693
  await plan3(await withAllowedPathScope(cwd, enrichedRequest), { conversational: true });
3694
3694
  console.log(chalk5.dim("\n> Starting implementation now...\n"));
3695
3695
  await continueWithCurrentTask(cwd, { runAllReady: true });
@@ -3730,7 +3730,7 @@ async function handleAgentConversationInput(cwd, input) {
3730
3730
  return true;
3731
3731
  }
3732
3732
  console.log(chalk5.dim("\n> Got it! Creating a task for this...\n"));
3733
- const { plan: plan2 } = await import("./plan-6FM5N36D.js");
3733
+ const { plan: plan2 } = await import("./plan-I3P6U2ZM.js");
3734
3734
  await plan2(await withAllowedPathScope(cwd, input), { conversational: true });
3735
3735
  if (shouldAutoExecuteAfterPlanning(input)) {
3736
3736
  await continueWithCurrentTask(cwd, { runAllReady: true });
@@ -3777,7 +3777,7 @@ async function showProposalForApproval(input) {
3777
3777
  }
3778
3778
  }
3779
3779
  async function showLatestPlannedAtom(cwd) {
3780
- const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-6FM5N36D.js");
3780
+ const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-I3P6U2ZM.js");
3781
3781
  const atoms = await listLocalAtoms2();
3782
3782
  if (atoms.length === 0) {
3783
3783
  console.log(chalk5.yellow("No atoms found yet. Tell me what to plan."));
@@ -3795,7 +3795,7 @@ async function showLatestPlannedAtom(cwd) {
3795
3795
  console.log(chalk5.dim(`
3796
3796
  Showing latest planned atom (${latest.externalId})...
3797
3797
  `));
3798
- const { show: show2 } = await import("./show-VCXYN4P6.js");
3798
+ const { show: show2 } = await import("./show-7HL5NIA7.js");
3799
3799
  await show2(latest.externalId);
3800
3800
  }
3801
3801
  function isContinuationDirective(input) {
@@ -3892,7 +3892,7 @@ async function applyApprovedProposal(cwd) {
3892
3892
  return;
3893
3893
  }
3894
3894
  console.log(chalk5.dim("\n> Great. I will create the task from your approved request.\n"));
3895
- const { plan: plan2 } = await import("./plan-6FM5N36D.js");
3895
+ const { plan: plan2 } = await import("./plan-I3P6U2ZM.js");
3896
3896
  await plan2(await withAllowedPathScope(cwd, approvedRequest), { conversational: true });
3897
3897
  console.log(chalk5.dim("\n> Approval received. Starting unattended execution for all READY atoms...\n"));
3898
3898
  await continueWithCurrentTask(cwd, { runAllReady: true });
@@ -3955,7 +3955,8 @@ function enrichApprovedAnalysisRequest(request, reviewedFiles, capsuleCount) {
3955
3955
  Approved analysis context:
3956
3956
  - Day-1 source files to use: ${normalizedFiles.join(", ")}
3957
3957
  - Create a sample using ${capsuleCount} capsule${capsuleCount === 1 ? "" : "s"}.
3958
- - Keep implementation in these files unless a path-scope update is explicitly approved.`;
3958
+ - Treat these files as source inputs (read-only) unless the user explicitly asks to edit them.
3959
+ - Write capsule output to a new dedicated file within allowed architecture paths.`;
3959
3960
  }
3960
3961
  function collectMarkdownFiles(cwd) {
3961
3962
  const results = [];
@@ -4045,13 +4046,13 @@ function buildSampleCapsuleDraft(cwd, files, capsuleCount) {
4045
4046
  ].join("\n");
4046
4047
  }
4047
4048
  async function continueWithCurrentTask(cwd, options = {}) {
4048
- const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-6FM5N36D.js");
4049
+ const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-I3P6U2ZM.js");
4049
4050
  const byMostRecent = (a, b) => {
4050
4051
  const aTime = new Date(String(a.updatedAt ?? a.createdAt ?? "")).getTime() || 0;
4051
4052
  const bTime = new Date(String(b.updatedAt ?? b.createdAt ?? "")).getTime() || 0;
4052
4053
  return bTime - aTime;
4053
4054
  };
4054
- const { execute: execute2 } = await import("./execute-ELKKB64F.js");
4055
+ const { execute: execute2 } = await import("./execute-AQWHZKDH.js");
4055
4056
  const runAllReady = options.runAllReady === true;
4056
4057
  const attempted = /* @__PURE__ */ new Set();
4057
4058
  let queueStarted = false;
@@ -4118,7 +4119,7 @@ Continuing with ${nextAtom.externalId}...
4118
4119
  }
4119
4120
  }
4120
4121
  async function replanLatestBlockedAtom(cwd) {
4121
- const { listLocalAtoms: listLocalAtoms2, plan: plan2 } = await import("./plan-6FM5N36D.js");
4122
+ const { listLocalAtoms: listLocalAtoms2, plan: plan2 } = await import("./plan-I3P6U2ZM.js");
4122
4123
  const atoms = await listLocalAtoms2();
4123
4124
  const blocked = atoms.filter((a) => a.status === "BLOCKED" && (a.errorMessage ?? "").toLowerCase().includes("outside the allowed paths")).sort((a, b) => {
4124
4125
  const aTime = new Date(String(a.updatedAt ?? a.createdAt ?? "")).getTime() || 0;
@@ -4224,7 +4225,7 @@ async function handleFreeformJourneyInput(cwd, input) {
4224
4225
  const state = detectProjectState(cwd);
4225
4226
  if (state.hasArchitecture) {
4226
4227
  console.log(chalk5.dim("\n> Got it! Creating a task for this...\n"));
4227
- const { plan: plan3 } = await import("./plan-6FM5N36D.js");
4228
+ const { plan: plan3 } = await import("./plan-I3P6U2ZM.js");
4228
4229
  await plan3(await withAllowedPathScope(cwd, freeform), { conversational: true });
4229
4230
  return true;
4230
4231
  }
@@ -4233,7 +4234,7 @@ async function handleFreeformJourneyInput(cwd, input) {
4233
4234
  return true;
4234
4235
  }
4235
4236
  console.log(chalk5.dim("\n> Got it! Creating a task for this...\n"));
4236
- const { plan: plan2 } = await import("./plan-6FM5N36D.js");
4237
+ const { plan: plan2 } = await import("./plan-I3P6U2ZM.js");
4237
4238
  await plan2(await withAllowedPathScope(cwd, freeform), { conversational: true });
4238
4239
  return true;
4239
4240
  }
@@ -4292,7 +4293,7 @@ async function handlePostExploreAction(cwd, request, options = {}) {
4292
4293
  } else {
4293
4294
  console.log(chalk5.dim("> Got it! Creating a task for this...\n"));
4294
4295
  }
4295
- const { plan: plan2 } = await import("./plan-6FM5N36D.js");
4296
+ const { plan: plan2 } = await import("./plan-I3P6U2ZM.js");
4296
4297
  await plan2(await withAllowedPathScope(cwd, request), { conversational: true });
4297
4298
  if (options.agentMode) {
4298
4299
  if (shouldAutoExecuteAfterPlanning(sourceInput)) {
@@ -4316,18 +4317,18 @@ Constraints:
4316
4317
  - If required files are outside this scope, propose the minimum architecture path update first.`;
4317
4318
  }
4318
4319
  async function planTask() {
4319
- const { plan: plan2 } = await import("./plan-6FM5N36D.js");
4320
+ const { plan: plan2 } = await import("./plan-I3P6U2ZM.js");
4320
4321
  const description = await promptWithCommands("Describe what you want to build", { allowMultiline: true });
4321
4322
  if (description.trim()) {
4322
4323
  await plan2(description, { conversational: true });
4323
4324
  }
4324
4325
  }
4325
4326
  async function listAtoms() {
4326
- const { list: list2 } = await import("./list-D2TUCX2L.js");
4327
+ const { list: list2 } = await import("./list-K5J3OCXZ.js");
4327
4328
  await list2({});
4328
4329
  }
4329
4330
  async function executeNext() {
4330
- const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-6FM5N36D.js");
4331
+ const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-I3P6U2ZM.js");
4331
4332
  const { analyzeProject, getComplexityDescription, getModeDescription } = await import("./orchestration-HIF3KP25.js");
4332
4333
  const { loadExecutionPreferences } = await import("./preferences-AGIZD5E5.js");
4333
4334
  const cwd = process.cwd();
@@ -4398,11 +4399,11 @@ async function executeNext() {
4398
4399
  }
4399
4400
  }
4400
4401
  if (selectedMode === "parallel-cloud") {
4401
- const { parallelExecuteCloud: parallelExecuteCloud2 } = await import("./parallel-V2OGLOQH.js");
4402
+ const { parallelExecuteCloud: parallelExecuteCloud2 } = await import("./parallel-5UP6URF2.js");
4402
4403
  await parallelExecuteCloud2(runIds);
4403
4404
  return;
4404
4405
  }
4405
- const { parallelExecute } = await import("./parallel-V2OGLOQH.js");
4406
+ const { parallelExecute } = await import("./parallel-5UP6URF2.js");
4406
4407
  await parallelExecute(runIds);
4407
4408
  return;
4408
4409
  }
@@ -4410,7 +4411,7 @@ async function executeNext() {
4410
4411
  const atomId = await prompt("Enter atom ID to execute (or press Enter for first pending)");
4411
4412
  const targetId = atomId.trim() || pendingAtoms[0]?.id;
4412
4413
  if (targetId) {
4413
- const { execute: execute2 } = await import("./execute-ELKKB64F.js");
4414
+ const { execute: execute2 } = await import("./execute-AQWHZKDH.js");
4414
4415
  await execute2(targetId, {});
4415
4416
  } else {
4416
4417
  console.log(chalk5.yellow("No atom to execute."));
@@ -4559,7 +4560,7 @@ async function handleSlashCommand(input) {
4559
4560
  const arg = parts.slice(1).join(" ").trim();
4560
4561
  switch (command) {
4561
4562
  case "/plan": {
4562
- const { plan: plan2 } = await import("./plan-6FM5N36D.js");
4563
+ const { plan: plan2 } = await import("./plan-I3P6U2ZM.js");
4563
4564
  if (arg) {
4564
4565
  await plan2(arg, { conversational: true });
4565
4566
  } else {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  list
3
- } from "./chunk-Q2PJ7JSI.js";
4
- import "./chunk-M63U52NF.js";
3
+ } from "./chunk-MQKPOULB.js";
4
+ import "./chunk-RH64CSQU.js";
5
5
  import "./chunk-WGLVDEZC.js";
6
6
  import "./chunk-3MZOEZUH.js";
7
7
  import "./chunk-F7R3QKHP.js";
@@ -6,9 +6,9 @@ import {
6
6
  parallelRunWaves,
7
7
  parallelSchedule,
8
8
  parallelStatus
9
- } from "./chunk-ZA43HOLZ.js";
9
+ } from "./chunk-JH3QUPQD.js";
10
10
  import "./chunk-EBHHIUCB.js";
11
- import "./chunk-M63U52NF.js";
11
+ import "./chunk-RH64CSQU.js";
12
12
  import "./chunk-WGLVDEZC.js";
13
13
  import "./chunk-3MZOEZUH.js";
14
14
  import "./chunk-F7R3QKHP.js";
@@ -3,7 +3,7 @@ import {
3
3
  loadAtom,
4
4
  parseAtomDescription,
5
5
  plan
6
- } from "./chunk-M63U52NF.js";
6
+ } from "./chunk-RH64CSQU.js";
7
7
  import "./chunk-WGLVDEZC.js";
8
8
  import "./chunk-3MZOEZUH.js";
9
9
  import "./chunk-F7R3QKHP.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  show
3
- } from "./chunk-VHKKRWDF.js";
4
- import "./chunk-M63U52NF.js";
3
+ } from "./chunk-RLENHKO4.js";
4
+ import "./chunk-RH64CSQU.js";
5
5
  import "./chunk-WGLVDEZC.js";
6
6
  import "./chunk-3MZOEZUH.js";
7
7
  import "./chunk-F7R3QKHP.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "archondev",
3
- "version": "2.19.41",
3
+ "version": "2.19.42",
4
4
  "description": "Local-first AI-powered development governance system",
5
5
  "main": "dist/index.js",
6
6
  "bin": {