archondev 2.19.38 → 2.19.40
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/README.md +2 -2
- package/dist/{chunk-6RDZF7BB.js → chunk-LZPNQBZX.js} +25 -3
- package/dist/{chunk-LGWUWEEJ.js → chunk-M63U52NF.js} +36 -9
- package/dist/{chunk-Y2QXZ2UR.js → chunk-Q2PJ7JSI.js} +1 -1
- package/dist/{chunk-4C6XR7WP.js → chunk-VHKKRWDF.js} +1 -1
- package/dist/{chunk-CFEX6EWG.js → chunk-ZA43HOLZ.js} +1 -1
- package/dist/{execute-I7YHYKPQ.js → execute-OB4P4UYU.js} +2 -2
- package/dist/index.js +48 -27
- package/dist/{list-WW6WUNBG.js → list-D2TUCX2L.js} +2 -2
- package/dist/{parallel-N74S3MFF.js → parallel-V2OGLOQH.js} +2 -2
- package/dist/{plan-S5EULQKJ.js → plan-6FM5N36D.js} +1 -1
- package/dist/{show-DYDXCREZ.js → show-VCXYN4P6.js} +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -123,8 +123,8 @@ pnpm exec tsx scripts/init-governance-db.ts
|
|
|
123
123
|
- You can paste multi‑line requests into interactive prompts; Archon captures them as a single response.
|
|
124
124
|
- Proposal approvals like `approve plan` now bind to the pending proposal context in chat mode.
|
|
125
125
|
- Governance boundary/path checks in execute now steer with actionable guidance and set atoms to `BLOCKED` rather than hard failing.
|
|
126
|
-
- Analysis-first requests now return recommendations first and
|
|
127
|
-
- Chat
|
|
126
|
+
- Analysis-first requests now return recommendations first and accept natural confirmations (`yes`, `go ahead`, `create`) to create governed tasks.
|
|
127
|
+
- Chat continuation supports natural directives (`continue`, `move forward`), and path-scope governance blocks now attempt automatic re-plan + retry recovery.
|
|
128
128
|
|
|
129
129
|
**Tip:** Use `archon plan --edit` to adjust title and acceptance criteria before planning.
|
|
130
130
|
**Web Checks:** If Archon detects a web project, it prompts to run A11y/SEO/GEO checks and stores your preference in `.archon/config.yaml`.
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
UsageRecorder,
|
|
8
8
|
handleInsufficientCreditsRecovery,
|
|
9
9
|
loadAtom
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-M63U52NF.js";
|
|
11
11
|
import {
|
|
12
12
|
transitionAtom
|
|
13
13
|
} from "./chunk-WGLVDEZC.js";
|
|
@@ -4182,12 +4182,32 @@ var ExecutorAgent = class {
|
|
|
4182
4182
|
* Execute an approved plan
|
|
4183
4183
|
*/
|
|
4184
4184
|
async executeAtom(atom, plan, architecture, cwd = process.cwd()) {
|
|
4185
|
+
if (plan.files_to_modify.length === 0) {
|
|
4186
|
+
return {
|
|
4187
|
+
success: false,
|
|
4188
|
+
diffs: [],
|
|
4189
|
+
usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },
|
|
4190
|
+
qualityChecksPassed: false,
|
|
4191
|
+
errorMessage: "Architecture violations: Plan has no target files to modify (files_to_modify is empty)",
|
|
4192
|
+
rollbackPerformed: false
|
|
4193
|
+
};
|
|
4194
|
+
}
|
|
4185
4195
|
const userMessage = await this.buildPrompt(atom, plan, architecture, cwd);
|
|
4186
4196
|
const response = await this.client.chat(SYSTEM_PROMPT, userMessage, {
|
|
4187
4197
|
temperature: 0.2,
|
|
4188
4198
|
maxTokens: 8192
|
|
4189
4199
|
});
|
|
4190
4200
|
const diffs = this.parseDiffs(response.content);
|
|
4201
|
+
if (diffs.length === 0) {
|
|
4202
|
+
return {
|
|
4203
|
+
success: false,
|
|
4204
|
+
diffs,
|
|
4205
|
+
usage: response.usage,
|
|
4206
|
+
qualityChecksPassed: false,
|
|
4207
|
+
errorMessage: "Architecture violations: Executor returned no file diffs; plan may be underspecified",
|
|
4208
|
+
rollbackPerformed: false
|
|
4209
|
+
};
|
|
4210
|
+
}
|
|
4191
4211
|
const violations = this.checkArchitectureViolations(diffs, plan, architecture);
|
|
4192
4212
|
if (violations.length > 0) {
|
|
4193
4213
|
return {
|
|
@@ -4324,6 +4344,8 @@ var ExecutorAgent = class {
|
|
|
4324
4344
|
parts.push("");
|
|
4325
4345
|
parts.push("# Your Task");
|
|
4326
4346
|
parts.push("Implement the plan by generating the file changes.");
|
|
4347
|
+
parts.push('Only output diffs for files listed under "Files to Modify".');
|
|
4348
|
+
parts.push("Do not invent new file paths or directories.");
|
|
4327
4349
|
parts.push("Output complete file contents for each file using the diff format.");
|
|
4328
4350
|
parts.push(`Remember: Your implementation style should match the ${posture.toUpperCase()} posture.`);
|
|
4329
4351
|
return parts.join("\n");
|
|
@@ -4810,7 +4832,7 @@ async function attemptPathScopeAutoRecovery(atom, cwd, parseSchema, options) {
|
|
|
4810
4832
|
if (allowedPaths.length === 0) {
|
|
4811
4833
|
return false;
|
|
4812
4834
|
}
|
|
4813
|
-
const { listLocalAtoms, plan } = await import("./plan-
|
|
4835
|
+
const { listLocalAtoms, plan } = await import("./plan-6FM5N36D.js");
|
|
4814
4836
|
const before = await listLocalAtoms();
|
|
4815
4837
|
const recoveryStartedAt = Date.now();
|
|
4816
4838
|
const recoverySource = atom.description ?? atom.title;
|
|
@@ -4878,7 +4900,7 @@ async function execute(atomId, options) {
|
|
|
4878
4900
|
process.exit(1);
|
|
4879
4901
|
};
|
|
4880
4902
|
if (options.parallel && options.parallel.length > 0) {
|
|
4881
|
-
const { parallelExecute } = await import("./parallel-
|
|
4903
|
+
const { parallelExecute } = await import("./parallel-V2OGLOQH.js");
|
|
4882
4904
|
const allAtomIds = [atomId, ...options.parallel];
|
|
4883
4905
|
await parallelExecute(allAtomIds, { skipGates: options.skipGates === true });
|
|
4884
4906
|
return;
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
import chalk2 from "chalk";
|
|
36
36
|
import { existsSync } from "fs";
|
|
37
37
|
import { readFile, writeFile, mkdir, stat } from "fs/promises";
|
|
38
|
-
import { join } from "path";
|
|
38
|
+
import { join, dirname, basename, extname } from "path";
|
|
39
39
|
import { createInterface } from "readline";
|
|
40
40
|
|
|
41
41
|
// src/agents/sentinel.ts
|
|
@@ -1458,17 +1458,20 @@ function buildContentPlan(input) {
|
|
|
1458
1458
|
const stepsFromNumbering = extractNumberedSteps(input.description);
|
|
1459
1459
|
const stepsFromRequirements = input.requirements.map((req) => `Create: ${req}`);
|
|
1460
1460
|
const steps = stepsFromNumbering.length > 0 ? stepsFromNumbering : stepsFromRequirements.length > 0 ? stepsFromRequirements : ["Draft a clear outline", "Write the content", "Review and refine", "Finalize deliverable"];
|
|
1461
|
-
const files =
|
|
1462
|
-
|
|
1463
|
-
|
|
1461
|
+
const files = resolveContentOutputTargets(
|
|
1462
|
+
input.description,
|
|
1463
|
+
input.referencedFiles,
|
|
1464
|
+
input.deliverableTarget
|
|
1465
|
+
);
|
|
1464
1466
|
const risks = [];
|
|
1465
1467
|
if (input.missingFiles.length > 0) {
|
|
1466
1468
|
risks.push(`Missing inputs: ${input.missingFiles.join(", ")}`);
|
|
1467
1469
|
}
|
|
1468
1470
|
risks.push("Source material may be incomplete; validate against lesson content.");
|
|
1471
|
+
risks.push("Do not modify source lesson files; write deliverables to output capsule files only.");
|
|
1469
1472
|
return {
|
|
1470
1473
|
steps,
|
|
1471
|
-
files_to_modify:
|
|
1474
|
+
files_to_modify: files,
|
|
1472
1475
|
dependencies: [],
|
|
1473
1476
|
risks,
|
|
1474
1477
|
estimated_complexity: steps.length > 6 ? "MEDIUM" : "LOW"
|
|
@@ -1491,17 +1494,41 @@ function buildConversationalFallbackPlan(input) {
|
|
|
1491
1494
|
if (input.deliverableTarget) {
|
|
1492
1495
|
steps.push(`Write output to ${input.deliverableTarget}`);
|
|
1493
1496
|
}
|
|
1497
|
+
const filesToModify = resolveContentOutputTargets(
|
|
1498
|
+
input.description,
|
|
1499
|
+
input.references,
|
|
1500
|
+
input.deliverableTarget
|
|
1501
|
+
);
|
|
1494
1502
|
return {
|
|
1495
1503
|
steps,
|
|
1496
|
-
files_to_modify:
|
|
1504
|
+
files_to_modify: filesToModify,
|
|
1497
1505
|
dependencies: [],
|
|
1498
1506
|
risks: [
|
|
1499
1507
|
"Reference mismatch risk: confirm inferred requirements against provided source documents.",
|
|
1500
|
-
"Scope drift risk: keep first increment focused on the requested sample deliverable."
|
|
1508
|
+
"Scope drift risk: keep first increment focused on the requested sample deliverable.",
|
|
1509
|
+
"Do not modify source inputs directly; write to a dedicated output file."
|
|
1501
1510
|
],
|
|
1502
1511
|
estimated_complexity: "LOW"
|
|
1503
1512
|
};
|
|
1504
1513
|
}
|
|
1514
|
+
function resolveContentOutputTargets(description, referencedFiles, deliverableTarget) {
|
|
1515
|
+
if (deliverableTarget && deliverableTarget.trim().length > 0) {
|
|
1516
|
+
return [deliverableTarget.trim()];
|
|
1517
|
+
}
|
|
1518
|
+
return [deriveDefaultContentOutputPath(description, referencedFiles)];
|
|
1519
|
+
}
|
|
1520
|
+
function deriveDefaultContentOutputPath(description, referencedFiles) {
|
|
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));
|
|
1523
|
+
if (!primaryRef) {
|
|
1524
|
+
return `capsule-output${sampleSuffix}.md`;
|
|
1525
|
+
}
|
|
1526
|
+
const baseDir = dirname(primaryRef);
|
|
1527
|
+
const fileBase = basename(primaryRef, extname(primaryRef));
|
|
1528
|
+
const outName = `${fileBase}${sampleSuffix}.md`;
|
|
1529
|
+
const output = baseDir === "." ? outName : join(baseDir, outName);
|
|
1530
|
+
return output.replace(/\\/g, "/");
|
|
1531
|
+
}
|
|
1505
1532
|
function extractReferencedFiles(description) {
|
|
1506
1533
|
const references = /* @__PURE__ */ new Set();
|
|
1507
1534
|
const barePattern = /\b[\w./-]+\.(md|txt|json|yaml|yml|png|jpg|jpeg|gif|svg|pdf)\b/gi;
|
|
@@ -1641,9 +1668,9 @@ async function listLocalAtoms() {
|
|
|
1641
1668
|
const files = await readdir(atomsDir);
|
|
1642
1669
|
const atoms = [];
|
|
1643
1670
|
for (const file of files) {
|
|
1644
|
-
if (
|
|
1671
|
+
if (/^ATOM-\d+\.json$/i.test(file)) {
|
|
1645
1672
|
const atom = await loadAtom(file.replace(".json", ""));
|
|
1646
|
-
if (atom) {
|
|
1673
|
+
if (atom && typeof atom.externalId === "string" && atom.externalId.length > 0) {
|
|
1647
1674
|
atoms.push(atom);
|
|
1648
1675
|
}
|
|
1649
1676
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
execute
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LZPNQBZX.js";
|
|
4
4
|
import "./chunk-EBHHIUCB.js";
|
|
5
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-M63U52NF.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-
|
|
16
|
+
} from "./chunk-VHKKRWDF.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-
|
|
53
|
+
} from "./chunk-ZA43HOLZ.js";
|
|
54
54
|
import {
|
|
55
55
|
DependencyParser,
|
|
56
56
|
EnvironmentConfigLoader,
|
|
57
57
|
EnvironmentValidator,
|
|
58
58
|
execute
|
|
59
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-LZPNQBZX.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-
|
|
67
|
+
} from "./chunk-Q2PJ7JSI.js";
|
|
68
68
|
import {
|
|
69
69
|
listLocalAtoms,
|
|
70
70
|
loadAtom,
|
|
71
71
|
plan
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-M63U52NF.js";
|
|
73
73
|
import "./chunk-WGLVDEZC.js";
|
|
74
74
|
import "./chunk-3MZOEZUH.js";
|
|
75
75
|
import {
|
|
@@ -2618,6 +2618,8 @@ var PAID_TIER_DEFAULT_CHAT_MODEL = "gemini-3.1-pro-preview";
|
|
|
2618
2618
|
var pendingProposalRequest = null;
|
|
2619
2619
|
var pendingProposalMode = "atom";
|
|
2620
2620
|
var pendingAnalysisToAtomRequest = null;
|
|
2621
|
+
var pendingAnalysisReviewedFiles = [];
|
|
2622
|
+
var pendingAnalysisCapsuleCount = null;
|
|
2621
2623
|
function uiText(rich, plain) {
|
|
2622
2624
|
return isTerminalSafeMode() ? plain : rich;
|
|
2623
2625
|
}
|
|
@@ -3253,7 +3255,7 @@ async function runExploreFlow(cwd, followUpInput, options = {}) {
|
|
|
3253
3255
|
case "1": {
|
|
3254
3256
|
const description = await promptWithCommands("Describe what you want to do", { allowMultiline: true });
|
|
3255
3257
|
if (description.trim()) {
|
|
3256
|
-
const { plan: plan2 } = await import("./plan-
|
|
3258
|
+
const { plan: plan2 } = await import("./plan-6FM5N36D.js");
|
|
3257
3259
|
await plan2(description, { conversational: true });
|
|
3258
3260
|
}
|
|
3259
3261
|
await showMainMenu();
|
|
@@ -3498,7 +3500,7 @@ ${state.forbiddenPatterns?.length ? `- **Forbidden patterns:** ${state.forbidden
|
|
|
3498
3500
|
const hintedTask = initialTaskHint?.trim() ?? "";
|
|
3499
3501
|
if (hintedTask) {
|
|
3500
3502
|
console.log(chalk5.dim("Using your request above as the first task.\n"));
|
|
3501
|
-
const { plan: plan2 } = await import("./plan-
|
|
3503
|
+
const { plan: plan2 } = await import("./plan-6FM5N36D.js");
|
|
3502
3504
|
await plan2(hintedTask, { conversational: true });
|
|
3503
3505
|
return;
|
|
3504
3506
|
}
|
|
@@ -3523,7 +3525,7 @@ ${state.forbiddenPatterns?.length ? `- **Forbidden patterns:** ${state.forbidden
|
|
|
3523
3525
|
description = continueAnswer.trim();
|
|
3524
3526
|
}
|
|
3525
3527
|
if (description.trim()) {
|
|
3526
|
-
const { plan: plan2 } = await import("./plan-
|
|
3528
|
+
const { plan: plan2 } = await import("./plan-6FM5N36D.js");
|
|
3527
3529
|
await plan2(description, { conversational: true });
|
|
3528
3530
|
}
|
|
3529
3531
|
}
|
|
@@ -3681,9 +3683,14 @@ async function handleAgentConversationInput(cwd, input) {
|
|
|
3681
3683
|
if (pendingAnalysisToAtomRequest && isCreateAtomDirective(normalized)) {
|
|
3682
3684
|
const request = pendingAnalysisToAtomRequest;
|
|
3683
3685
|
pendingAnalysisToAtomRequest = null;
|
|
3686
|
+
const reviewedFiles = [...pendingAnalysisReviewedFiles];
|
|
3687
|
+
pendingAnalysisReviewedFiles = [];
|
|
3688
|
+
const capsuleCount = pendingAnalysisCapsuleCount ?? 1;
|
|
3689
|
+
pendingAnalysisCapsuleCount = null;
|
|
3690
|
+
const enrichedRequest = enrichApprovedAnalysisRequest(request, reviewedFiles, capsuleCount);
|
|
3684
3691
|
console.log(chalk5.dim("\n> Great. Creating a governed task from the approved analysis plan.\n"));
|
|
3685
|
-
const { plan: plan3 } = await import("./plan-
|
|
3686
|
-
await plan3(await withAllowedPathScope(cwd,
|
|
3692
|
+
const { plan: plan3 } = await import("./plan-6FM5N36D.js");
|
|
3693
|
+
await plan3(await withAllowedPathScope(cwd, enrichedRequest), { conversational: true });
|
|
3687
3694
|
console.log(chalk5.dim("\n> Starting implementation now...\n"));
|
|
3688
3695
|
await continueWithCurrentTask(cwd);
|
|
3689
3696
|
return true;
|
|
@@ -3723,7 +3730,7 @@ async function handleAgentConversationInput(cwd, input) {
|
|
|
3723
3730
|
return true;
|
|
3724
3731
|
}
|
|
3725
3732
|
console.log(chalk5.dim("\n> Got it! Creating a task for this...\n"));
|
|
3726
|
-
const { plan: plan2 } = await import("./plan-
|
|
3733
|
+
const { plan: plan2 } = await import("./plan-6FM5N36D.js");
|
|
3727
3734
|
await plan2(await withAllowedPathScope(cwd, input), { conversational: true });
|
|
3728
3735
|
if (shouldAutoExecuteAfterPlanning(input)) {
|
|
3729
3736
|
await continueWithCurrentTask(cwd);
|
|
@@ -3770,7 +3777,7 @@ async function showProposalForApproval(input) {
|
|
|
3770
3777
|
}
|
|
3771
3778
|
}
|
|
3772
3779
|
async function showLatestPlannedAtom(cwd) {
|
|
3773
|
-
const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-
|
|
3780
|
+
const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-6FM5N36D.js");
|
|
3774
3781
|
const atoms = await listLocalAtoms2();
|
|
3775
3782
|
if (atoms.length === 0) {
|
|
3776
3783
|
console.log(chalk5.yellow("No atoms found yet. Tell me what to plan."));
|
|
@@ -3788,7 +3795,7 @@ async function showLatestPlannedAtom(cwd) {
|
|
|
3788
3795
|
console.log(chalk5.dim(`
|
|
3789
3796
|
Showing latest planned atom (${latest.externalId})...
|
|
3790
3797
|
`));
|
|
3791
|
-
const { show: show2 } = await import("./show-
|
|
3798
|
+
const { show: show2 } = await import("./show-VCXYN4P6.js");
|
|
3792
3799
|
await show2(latest.externalId);
|
|
3793
3800
|
}
|
|
3794
3801
|
function isContinuationDirective(input) {
|
|
@@ -3885,7 +3892,7 @@ async function applyApprovedProposal(cwd) {
|
|
|
3885
3892
|
return;
|
|
3886
3893
|
}
|
|
3887
3894
|
console.log(chalk5.dim("\n> Great. I will create the task from your approved request.\n"));
|
|
3888
|
-
const { plan: plan2 } = await import("./plan-
|
|
3895
|
+
const { plan: plan2 } = await import("./plan-6FM5N36D.js");
|
|
3889
3896
|
await plan2(await withAllowedPathScope(cwd, approvedRequest), { conversational: true });
|
|
3890
3897
|
if (shouldAutoExecuteAfterPlanning(approvedRequest)) {
|
|
3891
3898
|
await continueWithCurrentTask(cwd);
|
|
@@ -3937,9 +3944,23 @@ async function provideAnalysisFirstPlan(cwd, request) {
|
|
|
3937
3944
|
console.log(sampleDraft);
|
|
3938
3945
|
}
|
|
3939
3946
|
pendingAnalysisToAtomRequest = request;
|
|
3947
|
+
pendingAnalysisReviewedFiles = reviewedFiles;
|
|
3948
|
+
pendingAnalysisCapsuleCount = capsuleCount;
|
|
3940
3949
|
console.log();
|
|
3941
3950
|
console.log(chalk5.dim('Reply with "yes", "go ahead", or "create atom" when you want me to implement this in governed mode.'));
|
|
3942
3951
|
}
|
|
3952
|
+
function enrichApprovedAnalysisRequest(request, reviewedFiles, capsuleCount) {
|
|
3953
|
+
const normalizedFiles = reviewedFiles.map((file) => file.trim()).filter((file) => file.length > 0);
|
|
3954
|
+
if (normalizedFiles.length === 0) {
|
|
3955
|
+
return request;
|
|
3956
|
+
}
|
|
3957
|
+
return `${request}
|
|
3958
|
+
|
|
3959
|
+
Approved analysis context:
|
|
3960
|
+
- Day-1 source files to use: ${normalizedFiles.join(", ")}
|
|
3961
|
+
- Create a sample using ${capsuleCount} capsule${capsuleCount === 1 ? "" : "s"}.
|
|
3962
|
+
- Keep implementation in these files unless a path-scope update is explicitly approved.`;
|
|
3963
|
+
}
|
|
3943
3964
|
function collectMarkdownFiles(cwd) {
|
|
3944
3965
|
const results = [];
|
|
3945
3966
|
const queue = ["."];
|
|
@@ -4028,7 +4049,7 @@ function buildSampleCapsuleDraft(cwd, files, capsuleCount) {
|
|
|
4028
4049
|
].join("\n");
|
|
4029
4050
|
}
|
|
4030
4051
|
async function continueWithCurrentTask(cwd) {
|
|
4031
|
-
const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-
|
|
4052
|
+
const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-6FM5N36D.js");
|
|
4032
4053
|
const atoms = await listLocalAtoms2();
|
|
4033
4054
|
const byMostRecent = (a, b) => {
|
|
4034
4055
|
const aTime = new Date(String(a.updatedAt ?? a.createdAt ?? "")).getTime() || 0;
|
|
@@ -4061,11 +4082,11 @@ async function continueWithCurrentTask(cwd) {
|
|
|
4061
4082
|
console.log(chalk5.dim(`
|
|
4062
4083
|
Continuing with ${nextAtom.externalId}...
|
|
4063
4084
|
`));
|
|
4064
|
-
const { execute: execute2 } = await import("./execute-
|
|
4085
|
+
const { execute: execute2 } = await import("./execute-OB4P4UYU.js");
|
|
4065
4086
|
await execute2(nextAtom.externalId, { nonTerminating: true });
|
|
4066
4087
|
}
|
|
4067
4088
|
async function replanLatestBlockedAtom(cwd) {
|
|
4068
|
-
const { listLocalAtoms: listLocalAtoms2, plan: plan2 } = await import("./plan-
|
|
4089
|
+
const { listLocalAtoms: listLocalAtoms2, plan: plan2 } = await import("./plan-6FM5N36D.js");
|
|
4069
4090
|
const atoms = await listLocalAtoms2();
|
|
4070
4091
|
const blocked = atoms.filter((a) => a.status === "BLOCKED" && (a.errorMessage ?? "").toLowerCase().includes("outside the allowed paths")).sort((a, b) => {
|
|
4071
4092
|
const aTime = new Date(String(a.updatedAt ?? a.createdAt ?? "")).getTime() || 0;
|
|
@@ -4171,7 +4192,7 @@ async function handleFreeformJourneyInput(cwd, input) {
|
|
|
4171
4192
|
const state = detectProjectState(cwd);
|
|
4172
4193
|
if (state.hasArchitecture) {
|
|
4173
4194
|
console.log(chalk5.dim("\n> Got it! Creating a task for this...\n"));
|
|
4174
|
-
const { plan: plan3 } = await import("./plan-
|
|
4195
|
+
const { plan: plan3 } = await import("./plan-6FM5N36D.js");
|
|
4175
4196
|
await plan3(await withAllowedPathScope(cwd, freeform), { conversational: true });
|
|
4176
4197
|
return true;
|
|
4177
4198
|
}
|
|
@@ -4180,7 +4201,7 @@ async function handleFreeformJourneyInput(cwd, input) {
|
|
|
4180
4201
|
return true;
|
|
4181
4202
|
}
|
|
4182
4203
|
console.log(chalk5.dim("\n> Got it! Creating a task for this...\n"));
|
|
4183
|
-
const { plan: plan2 } = await import("./plan-
|
|
4204
|
+
const { plan: plan2 } = await import("./plan-6FM5N36D.js");
|
|
4184
4205
|
await plan2(await withAllowedPathScope(cwd, freeform), { conversational: true });
|
|
4185
4206
|
return true;
|
|
4186
4207
|
}
|
|
@@ -4239,7 +4260,7 @@ async function handlePostExploreAction(cwd, request, options = {}) {
|
|
|
4239
4260
|
} else {
|
|
4240
4261
|
console.log(chalk5.dim("> Got it! Creating a task for this...\n"));
|
|
4241
4262
|
}
|
|
4242
|
-
const { plan: plan2 } = await import("./plan-
|
|
4263
|
+
const { plan: plan2 } = await import("./plan-6FM5N36D.js");
|
|
4243
4264
|
await plan2(await withAllowedPathScope(cwd, request), { conversational: true });
|
|
4244
4265
|
if (options.agentMode) {
|
|
4245
4266
|
if (shouldAutoExecuteAfterPlanning(sourceInput)) {
|
|
@@ -4263,18 +4284,18 @@ Constraints:
|
|
|
4263
4284
|
- If required files are outside this scope, propose the minimum architecture path update first.`;
|
|
4264
4285
|
}
|
|
4265
4286
|
async function planTask() {
|
|
4266
|
-
const { plan: plan2 } = await import("./plan-
|
|
4287
|
+
const { plan: plan2 } = await import("./plan-6FM5N36D.js");
|
|
4267
4288
|
const description = await promptWithCommands("Describe what you want to build", { allowMultiline: true });
|
|
4268
4289
|
if (description.trim()) {
|
|
4269
4290
|
await plan2(description, { conversational: true });
|
|
4270
4291
|
}
|
|
4271
4292
|
}
|
|
4272
4293
|
async function listAtoms() {
|
|
4273
|
-
const { list: list2 } = await import("./list-
|
|
4294
|
+
const { list: list2 } = await import("./list-D2TUCX2L.js");
|
|
4274
4295
|
await list2({});
|
|
4275
4296
|
}
|
|
4276
4297
|
async function executeNext() {
|
|
4277
|
-
const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-
|
|
4298
|
+
const { listLocalAtoms: listLocalAtoms2 } = await import("./plan-6FM5N36D.js");
|
|
4278
4299
|
const { analyzeProject, getComplexityDescription, getModeDescription } = await import("./orchestration-HIF3KP25.js");
|
|
4279
4300
|
const { loadExecutionPreferences } = await import("./preferences-AGIZD5E5.js");
|
|
4280
4301
|
const cwd = process.cwd();
|
|
@@ -4345,11 +4366,11 @@ async function executeNext() {
|
|
|
4345
4366
|
}
|
|
4346
4367
|
}
|
|
4347
4368
|
if (selectedMode === "parallel-cloud") {
|
|
4348
|
-
const { parallelExecuteCloud: parallelExecuteCloud2 } = await import("./parallel-
|
|
4369
|
+
const { parallelExecuteCloud: parallelExecuteCloud2 } = await import("./parallel-V2OGLOQH.js");
|
|
4349
4370
|
await parallelExecuteCloud2(runIds);
|
|
4350
4371
|
return;
|
|
4351
4372
|
}
|
|
4352
|
-
const { parallelExecute } = await import("./parallel-
|
|
4373
|
+
const { parallelExecute } = await import("./parallel-V2OGLOQH.js");
|
|
4353
4374
|
await parallelExecute(runIds);
|
|
4354
4375
|
return;
|
|
4355
4376
|
}
|
|
@@ -4357,7 +4378,7 @@ async function executeNext() {
|
|
|
4357
4378
|
const atomId = await prompt("Enter atom ID to execute (or press Enter for first pending)");
|
|
4358
4379
|
const targetId = atomId.trim() || pendingAtoms[0]?.id;
|
|
4359
4380
|
if (targetId) {
|
|
4360
|
-
const { execute: execute2 } = await import("./execute-
|
|
4381
|
+
const { execute: execute2 } = await import("./execute-OB4P4UYU.js");
|
|
4361
4382
|
await execute2(targetId, {});
|
|
4362
4383
|
} else {
|
|
4363
4384
|
console.log(chalk5.yellow("No atom to execute."));
|
|
@@ -4506,7 +4527,7 @@ async function handleSlashCommand(input) {
|
|
|
4506
4527
|
const arg = parts.slice(1).join(" ").trim();
|
|
4507
4528
|
switch (command) {
|
|
4508
4529
|
case "/plan": {
|
|
4509
|
-
const { plan: plan2 } = await import("./plan-
|
|
4530
|
+
const { plan: plan2 } = await import("./plan-6FM5N36D.js");
|
|
4510
4531
|
if (arg) {
|
|
4511
4532
|
await plan2(arg, { conversational: true });
|
|
4512
4533
|
} else {
|
|
@@ -6,9 +6,9 @@ import {
|
|
|
6
6
|
parallelRunWaves,
|
|
7
7
|
parallelSchedule,
|
|
8
8
|
parallelStatus
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-ZA43HOLZ.js";
|
|
10
10
|
import "./chunk-EBHHIUCB.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-M63U52NF.js";
|
|
12
12
|
import "./chunk-WGLVDEZC.js";
|
|
13
13
|
import "./chunk-3MZOEZUH.js";
|
|
14
14
|
import "./chunk-F7R3QKHP.js";
|