@delete101020/aidlc 4.0.36 → 4.0.37
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 +7 -0
- package/dist/bundle.js +105 -16
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -313,6 +313,13 @@ the pipeline it was derived from) and inherits its tags; override with
|
|
|
313
313
|
runs: the child waits at its first step until someone starts it. The
|
|
314
314
|
extension's card offers the same as **New follow-up epic**.
|
|
315
315
|
|
|
316
|
+
One epic can follow several: `epic follow-up SEAL-CUT --also SEAL-CLASSIFY`
|
|
317
|
+
(repeatable; **Also follows** in the extension) when one change reworks what two
|
|
318
|
+
earlier epics built. The extra parents go into `also_from` — linked from both
|
|
319
|
+
cards, while the child stays grouped under `<parent>`. Every phase prompt tells
|
|
320
|
+
the agent to read each parent's `intent.md` and `spec.md` first, so the child
|
|
321
|
+
starts from their rules instead of a change request on each.
|
|
322
|
+
|
|
316
323
|
**Tags** are free text in and one canonical form on disk: uppercase, ASCII,
|
|
317
324
|
dash-separated — `"thanh toán VNPay"` is stored as `THANH-TOAN-VNPAY`, and the
|
|
318
325
|
accents and case are folded on the way *in* to a filter too, so `--tag "thanh
|
package/dist/bundle.js
CHANGED
|
@@ -27076,7 +27076,7 @@ var require_FollowUps = __commonJS({
|
|
|
27076
27076
|
};
|
|
27077
27077
|
}();
|
|
27078
27078
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
27079
|
-
exports2.MANUAL_FOLLOW_UP_KEY_PREFIX = exports2.FollowUpsParseError = exports2.FollowUpManifestSchema = exports2.FollowUpItemSchema = exports2.FOLLOW_UP_INTENT = exports2.FOLLOW_UPS_FILE = void 0;
|
|
27079
|
+
exports2.MANUAL_FOLLOW_UP_KEY_PREFIX = exports2.ALSO_FROM_INPUT = exports2.FollowUpsParseError = exports2.FollowUpManifestSchema = exports2.FollowUpItemSchema = exports2.FOLLOW_UP_INTENT = exports2.FOLLOW_UPS_FILE = void 0;
|
|
27080
27080
|
exports2.parseFollowUps = parseFollowUps;
|
|
27081
27081
|
exports2.readEpicFollowUps = readEpicFollowUps;
|
|
27082
27082
|
exports2.followUpsOf = followUpsOf;
|
|
@@ -27235,8 +27235,16 @@ var require_FollowUps = __commonJS({
|
|
|
27235
27235
|
intentPath: path17.join(result.artifactsDir, exports2.FOLLOW_UP_INTENT)
|
|
27236
27236
|
};
|
|
27237
27237
|
}
|
|
27238
|
-
|
|
27239
|
-
|
|
27238
|
+
exports2.ALSO_FROM_INPUT = "also_from";
|
|
27239
|
+
function withFollowUpProvenance2(inputs, parentEpicId, key, alsoFrom = []) {
|
|
27240
|
+
const { [exports2.ALSO_FROM_INPUT]: _ignored, ...rest } = inputs;
|
|
27241
|
+
const others = [...new Set(alsoFrom.map((id) => id.trim()).filter((id) => id && id !== parentEpicId))];
|
|
27242
|
+
return {
|
|
27243
|
+
...rest,
|
|
27244
|
+
from_epic: parentEpicId,
|
|
27245
|
+
follow_up_key: key,
|
|
27246
|
+
...others.length > 0 ? { [exports2.ALSO_FROM_INPUT]: others.join(",") } : {}
|
|
27247
|
+
};
|
|
27240
27248
|
}
|
|
27241
27249
|
exports2.MANUAL_FOLLOW_UP_KEY_PREFIX = "F";
|
|
27242
27250
|
function nextManualFollowUpKey(taken) {
|
|
@@ -30677,6 +30685,24 @@ var require_epicFocus = __commonJS({
|
|
|
30677
30685
|
}
|
|
30678
30686
|
});
|
|
30679
30687
|
|
|
30688
|
+
// ../core/dist/loader/inheritedContext.js
|
|
30689
|
+
var require_inheritedContext = __commonJS({
|
|
30690
|
+
"../core/dist/loader/inheritedContext.js"(exports2) {
|
|
30691
|
+
"use strict";
|
|
30692
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
30693
|
+
exports2.INHERITED_CONTEXT_MARKER = void 0;
|
|
30694
|
+
exports2.inheritedContextNote = inheritedContextNote;
|
|
30695
|
+
exports2.commandBodyPredatesInheritedContext = commandBodyPredatesInheritedContext;
|
|
30696
|
+
exports2.INHERITED_CONTEXT_MARKER = "`also_from`";
|
|
30697
|
+
function inheritedContextNote(epicRoot) {
|
|
30698
|
+
return `If it has \`from_epic\` (and ${exports2.INHERITED_CONTEXT_MARKER}, comma-separated), this epic follows those epics and inherits their business rules: before writing, read each one's \`${epicRoot}/<parent>/artifacts/intent.md\` and \`spec.md\` (whichever exist), keep what this epic does not change, and say what it changes.`;
|
|
30699
|
+
}
|
|
30700
|
+
function commandBodyPredatesInheritedContext(existing) {
|
|
30701
|
+
return !existing.includes(exports2.INHERITED_CONTEXT_MARKER);
|
|
30702
|
+
}
|
|
30703
|
+
}
|
|
30704
|
+
});
|
|
30705
|
+
|
|
30680
30706
|
// ../core/dist/presets/commandBodyFreshness.js
|
|
30681
30707
|
var require_commandBodyFreshness = __commonJS({
|
|
30682
30708
|
"../core/dist/presets/commandBodyFreshness.js"(exports2) {
|
|
@@ -30685,8 +30711,9 @@ var require_commandBodyFreshness = __commonJS({
|
|
|
30685
30711
|
exports2.commandBodyIsStale = commandBodyIsStale;
|
|
30686
30712
|
var artifactLanguage_1 = require_artifactLanguage();
|
|
30687
30713
|
var strictMode_1 = require_strictMode();
|
|
30714
|
+
var inheritedContext_1 = require_inheritedContext();
|
|
30688
30715
|
function commandBodyIsStale(existing) {
|
|
30689
|
-
return (0, artifactLanguage_1.commandBodyPredatesArtifactLanguage)(existing) || (0, strictMode_1.commandBodyPredatesStrictMode)(existing);
|
|
30716
|
+
return (0, artifactLanguage_1.commandBodyPredatesArtifactLanguage)(existing) || (0, strictMode_1.commandBodyPredatesStrictMode)(existing) || (0, inheritedContext_1.commandBodyPredatesInheritedContext)(existing);
|
|
30690
30717
|
}
|
|
30691
30718
|
}
|
|
30692
30719
|
});
|
|
@@ -31337,8 +31364,46 @@ Expected a JS/TS module at "${scriptPath}" with a default-exported function retu
|
|
|
31337
31364
|
var require_execEngine = __commonJS({
|
|
31338
31365
|
"../core/dist/runs/execEngine.js"(exports2) {
|
|
31339
31366
|
"use strict";
|
|
31367
|
+
var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
|
|
31368
|
+
if (k2 === void 0) k2 = k;
|
|
31369
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
31370
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
31371
|
+
desc = { enumerable: true, get: function() {
|
|
31372
|
+
return m[k];
|
|
31373
|
+
} };
|
|
31374
|
+
}
|
|
31375
|
+
Object.defineProperty(o, k2, desc);
|
|
31376
|
+
} : function(o, m, k, k2) {
|
|
31377
|
+
if (k2 === void 0) k2 = k;
|
|
31378
|
+
o[k2] = m[k];
|
|
31379
|
+
});
|
|
31380
|
+
var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
|
|
31381
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
31382
|
+
} : function(o, v) {
|
|
31383
|
+
o["default"] = v;
|
|
31384
|
+
});
|
|
31385
|
+
var __importStar = exports2 && exports2.__importStar || /* @__PURE__ */ function() {
|
|
31386
|
+
var ownKeys = function(o) {
|
|
31387
|
+
ownKeys = Object.getOwnPropertyNames || function(o2) {
|
|
31388
|
+
var ar = [];
|
|
31389
|
+
for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k;
|
|
31390
|
+
return ar;
|
|
31391
|
+
};
|
|
31392
|
+
return ownKeys(o);
|
|
31393
|
+
};
|
|
31394
|
+
return function(mod) {
|
|
31395
|
+
if (mod && mod.__esModule) return mod;
|
|
31396
|
+
var result = {};
|
|
31397
|
+
if (mod != null) {
|
|
31398
|
+
for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31399
|
+
}
|
|
31400
|
+
__setModuleDefault(result, mod);
|
|
31401
|
+
return result;
|
|
31402
|
+
};
|
|
31403
|
+
}();
|
|
31340
31404
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
31341
31405
|
exports2.runExecLoop = runExecLoop2;
|
|
31406
|
+
var path17 = __importStar(require("path"));
|
|
31342
31407
|
var WorkspaceLoader_1 = require_WorkspaceLoader();
|
|
31343
31408
|
var RunStateStore_1 = require_RunStateStore();
|
|
31344
31409
|
var PipelineRunner_1 = require_PipelineRunner();
|
|
@@ -31353,6 +31418,7 @@ var require_execEngine = __commonJS({
|
|
|
31353
31418
|
var WorkspaceSchema_1 = require_WorkspaceSchema();
|
|
31354
31419
|
var artifactLanguage_1 = require_artifactLanguage();
|
|
31355
31420
|
var strictMode_1 = require_strictMode();
|
|
31421
|
+
var inheritedContext_1 = require_inheritedContext();
|
|
31356
31422
|
var promptComposer_1 = require_promptComposer();
|
|
31357
31423
|
var projectInstructions_1 = require_projectInstructions();
|
|
31358
31424
|
var types_1 = require_types();
|
|
@@ -31553,7 +31619,11 @@ var require_execEngine = __commonJS({
|
|
|
31553
31619
|
const skillText = prompt2.text;
|
|
31554
31620
|
const env = ws.envResolver.resolveLayered(ws.config.environment ?? {}, agent.env ?? {});
|
|
31555
31621
|
const contextStr = Object.entries(state.context).map(([k, v]) => `${k}=${v}`).join(" ");
|
|
31556
|
-
const
|
|
31622
|
+
const epicRoot = path17.relative(root, (0, EpicScaffold_1.epicsRoot)(root, ws.config)).split(path17.sep).join("/");
|
|
31623
|
+
const inherited = state.context.from_epic ? `
|
|
31624
|
+
|
|
31625
|
+
About these inputs: ${(0, inheritedContext_1.inheritedContextNote)(epicRoot)}` : "";
|
|
31626
|
+
const userMessage = opts.message ?? (contextStr ? contextStr + inherited : `Execute step: ${agentId}`);
|
|
31557
31627
|
if (opts.dryRun) {
|
|
31558
31628
|
hooks.onDryRunPreview?.({
|
|
31559
31629
|
skills: skillIds.join(", "),
|
|
@@ -32094,6 +32164,7 @@ var require_builtinWorkflows = __commonJS({
|
|
|
32094
32164
|
var path17 = __importStar(require("path"));
|
|
32095
32165
|
var artifactLanguage_1 = require_artifactLanguage();
|
|
32096
32166
|
var strictMode_1 = require_strictMode();
|
|
32167
|
+
var inheritedContext_1 = require_inheritedContext();
|
|
32097
32168
|
var models_1 = require_models();
|
|
32098
32169
|
var templateRenderer_1 = require_templateRenderer();
|
|
32099
32170
|
var PHASES = [
|
|
@@ -32890,7 +32961,7 @@ The user invoked you with epic id \`$ARGUMENTS\`.
|
|
|
32890
32961
|
1. Read \`${epicRoot}/$ARGUMENTS/state.json\` to understand the current run state.
|
|
32891
32962
|
- If the step has \`feedback\` from a prior rejection, address it explicitly in this revision.
|
|
32892
32963
|
- Check \`history\` entries for rejection reasons and context.
|
|
32893
|
-
2. Read \`${epicRoot}/$ARGUMENTS/inputs.json\` for capability inputs (Jira ticket, Figma URL, files glob, GitHub repo, etc.).
|
|
32964
|
+
2. Read \`${epicRoot}/$ARGUMENTS/inputs.json\` for capability inputs (Jira ticket, Figma URL, files glob, GitHub repo, etc.). ${(0, inheritedContext_1.inheritedContextNote)(epicRoot)}
|
|
32894
32965
|
${artifactInstruction}
|
|
32895
32966
|
4. When finished, summarize what you produced and tell the user to click **"Mark step done"** in the AIDLC panel to advance the pipeline.
|
|
32896
32967
|
|
|
@@ -33308,6 +33379,7 @@ var require_commandModel = __commonJS({
|
|
|
33308
33379
|
var path17 = __importStar(require("path"));
|
|
33309
33380
|
var artifactLanguage_1 = require_artifactLanguage();
|
|
33310
33381
|
var strictMode_1 = require_strictMode();
|
|
33382
|
+
var inheritedContext_1 = require_inheritedContext();
|
|
33311
33383
|
var commandBodyFreshness_1 = require_commandBodyFreshness();
|
|
33312
33384
|
var WorkspaceSchema_1 = require_WorkspaceSchema();
|
|
33313
33385
|
var runProgress_1 = require_runProgress();
|
|
@@ -33466,7 +33538,7 @@ Claude \u2014 but still follow the structural contract below.
|
|
|
33466
33538
|
|
|
33467
33539
|
1. Read \`${epicRoot}/<epic>/state.json\` for prior feedback/history and address
|
|
33468
33540
|
any rejection reasons in this revision.
|
|
33469
|
-
2. Read \`${epicRoot}/<epic>/inputs.json\` for capability inputs.
|
|
33541
|
+
2. Read \`${epicRoot}/<epic>/inputs.json\` for capability inputs. ${(0, inheritedContext_1.inheritedContextNote)(epicRoot)}
|
|
33470
33542
|
3. Before writing, read the blank template for that artifact at
|
|
33471
33543
|
\`.aidlc/aidlc-templates/<templatesId>/<FILE>\` and follow its structure \u2014
|
|
33472
33544
|
\`<templatesId>\` is the pipeline's \`derived_from\` when it has one (a
|
|
@@ -33509,7 +33581,7 @@ procedure exactly as \`/aidlc <epic> ${phase.id}\` would:
|
|
|
33509
33581
|
ones \u2014 and only fall back to \`.claude/skills/<id>.md\` and
|
|
33510
33582
|
\`.claude/agents/<id>.md\` when none is declared. Adopt them (unless the
|
|
33511
33583
|
active standard is \`none\`), then follow the structural contract: read
|
|
33512
|
-
state/inputs, write to
|
|
33584
|
+
state/inputs (${(0, inheritedContext_1.inheritedContextNote)(epicRoot)}), write to
|
|
33513
33585
|
\`${epicRoot}/<epic>/artifacts/${phase.artifact}\` (or the step's declared
|
|
33514
33586
|
artifact), and tell the user to click **"Mark step done"**.
|
|
33515
33587
|
|
|
@@ -34034,10 +34106,10 @@ var require_dist = __commonJS({
|
|
|
34034
34106
|
exports2.SignalParseError = exports2.isSignal = exports2.parseSignal = exports2.SignalSchema = exports2.EpicStepEditError = exports2.resolveStepRef = exports2.describeGateEffect = exports2.commitEpicStepEdit = exports2.planSetEpicStepGates = exports2.planRemoveEpicStep = exports2.planAddEpicStep = exports2.EpicWorkflowSwitchError = exports2.canSwitchEpicWorkflow = exports2.epicWorkflowLock = exports2.applyEpicWorkflowSwitch = exports2.stageEpicWorkflowSwitch = exports2.planEpicWorkflowSwitch = exports2.EpicDescriptionError = exports2.setEpicDescription = exports2.lockedEpicDirError = exports2.EpicScaffoldError = exports2.epicsRoot = exports2.mapStepStatusToEpic = exports2.mirrorRunStateToEpic = exports2.scaffoldEpic = exports2.resolveArtifactCommitConfig = exports2.commitApprovedArtifacts = exports2.PipelineAdaptError = exports2.applyAdaptation = exports2.parseAdaptationVerdict = exports2.buildAdaptationPrompt = exports2.buildPhaseCatalog = exports2.slugEpicId = exports2.parseClassificationVerdict = exports2.buildClassificationPrompt = exports2.heuristicClassify = exports2.PipelineAssembleError = exports2.pipelineRecipeLabel = exports2.recipePipelineId = exports2.assemblePipeline = exports2.collectWorkspaceRefIssues = exports2.resolveStepSkills = exports2.stepSkillAlternatives = exports2.stepDagId = exports2.stepAgentId = exports2.producesEntries = exports2.normalizeStep = exports2.WorkspaceValidationError = exports2.validateWorkspace = exports2.WorkspaceSchema = void 0;
|
|
34035
34107
|
exports2.dropRecipeStep = exports2.recipesDrawingFrom = exports2.WORKSPACE_DIR = exports2.WORKSPACE_FILENAME = exports2.WorkspaceParseError = exports2.WorkspaceNotFoundError = exports2.WorkspaceLoader = exports2.renderPlanMarkdown = exports2.generatePlan = exports2.collectContext = exports2.followUpHookFailures = exports2.pendingFollowUpDone = exports2.applyFollowUpHookRun = exports2.trackFollowUpChildren = exports2.writeFollowUpHookLedger = exports2.readFollowUpHookLedger = exports2.followUpHookLedgerPath = exports2.runFollowUpHook = exports2.fillFollowUpHookCommand = exports2.resolveFollowUpHooks = exports2.epicPipelineId = exports2.FOLLOW_UP_HOOK_TIMEOUT_MS = exports2.FOLLOW_UP_HOOKS_LEDGER = exports2.stepProducesFollowUps = exports2.collectFollowUpHookIssues = exports2.FOLLOW_UP_HOOK_PLACEHOLDERS = exports2.FOLLOW_UP_HOOK_KEYS = exports2.FOLLOW_UP_INTENT = exports2.FOLLOW_UPS_FILE = exports2.MANUAL_FOLLOW_UP_KEY_PREFIX = exports2.followUpDefaults = exports2.nextManualFollowUpKey = exports2.withFollowUpProvenance = exports2.openManifestFollowUp = exports2.followUpChildId = exports2.followUpsOf = exports2.readEpicFollowUps = exports2.parseFollowUps = exports2.FollowUpsParseError = exports2.FollowUpManifestSchema = exports2.FollowUpItemSchema = exports2.SIGNAL_FILE = exports2.FOLLOW_UP_ARTIFACT = exports2.readEpicSignal = exports2.existingEpicIds = exports2.followUpIdFor = exports2.followUpEpicId = exports2.renderIntentMarkdown = exports2.openFollowUpEpic = exports2.openIncidentEpic = void 0;
|
|
34036
34108
|
exports2.RECENT_EPICS_LIMIT = exports2.RECENT_EPICS_KEY = exports2.EPIC_LIST_FLAT_KEY = exports2.EPIC_SORT_KEY = exports2.ACTIVE_EPIC_KEY = exports2.writeUserEpicIdPrefix = exports2.userConfigPath = exports2.updateUserConfig = exports2.readUserConfig = exports2.readGitUserName = exports2.ensureUserConfigIgnored = exports2.USER_CONFIG_RELPATH = exports2.USER_CONFIG_IGNORE_LINE = exports2.suggestEpicId = exports2.resolveEpicIdPrefixChain = exports2.resolveEpicIdPrefix = exports2.epicIdDateStamp = exports2.deriveEpicIdPrefix = exports2.EPIC_ID_PREFIX_PATTERN = exports2.EPIC_ID_PREFIX_KEY = exports2.resolveArtifactLanguage = exports2.commandBodyPredatesArtifactLanguage = exports2.artifactLanguageSection = exports2.ARTIFACT_LANGUAGE_HEADING = exports2.stripPersonaDirectives = exports2.composeAgentPrompt = exports2.PROJECT_INSTRUCTION_FILES = exports2.findProjectInstructions = exports2.stripPersonaMetadata = exports2.PersonaLoader = exports2.SkillNotFoundError = exports2.SkillLoader = exports2.EnvVarMissingError = exports2.EnvResolver = exports2.epicPipelineReport = exports2.planEpicPipelineExtraction = exports2.epicOwningPipeline = exports2.unstageEpicPipeline = exports2.stageEpicPipeline = exports2.writeEpicPipelines = exports2.splitEpicPipelines = exports2.mergeEpicPipelines = exports2.epicPipelinePath = exports2.EPIC_PIPELINE_FILENAME = exports2.unusedAfterStepRemoval = exports2.skillReferences = exports2.agentReferences = exports2.renameSkillRefs = exports2.renameAgentRefs = exports2.dropRecipesForPipeline = void 0;
|
|
34037
|
-
exports2.
|
|
34038
|
-
exports2.
|
|
34039
|
-
exports2.
|
|
34040
|
-
exports2.AIDLC_CORE_VERSION = exports2.AIDLC_CLI_GUIDE_TEXT = exports2.AIDLC_KNOWLEDGE = exports2.clearResolveCommandCache = exports2.resolveCommand = exports2.remapClaudePath = exports2.claudeConfigEnv = exports2.claudeJsonPath = exports2.isDefaultClaudeConfigDir = exports2.claudeConfigDir = exports2.resolveClaudeConfigDir = exports2.defaultClaudeConfigDir = exports2.getClaudeConfigDirOverride = exports2.setClaudeConfigDir = exports2.resolveDeclaredPath = exports2.expandHome = exports2.ProfileLoadError = exports2.UnknownStandardError = exports2.builtinProfiles = exports2.loadActiveProfile = exports2.loadProfile = exports2.listProfileManifests = exports2.resolveStandard = exports2.workspaceStandard = exports2.isBuiltinProfileId = exports2.ProfileSchema = exports2.TRACE_RULES = exports2.PROFILES_DIR = exports2.DEFAULT_PROFILE_ID = exports2.BUILTIN_PROFILE_IDS = exports2.setEpicMemoryHook = exports2.isEpicMemoryHookEnabled = exports2.installAnnotationTools = exports2.relativeEpicRoot = exports2.provisionDeclaredWorkflows = exports2.provisionWorkflowFiles = exports2.writeWorkflowArtifactTemplates = exports2.writeWorkflowCommands = exports2.provisionShortcutDocs = exports2.writeTwoLayerCommands = exports2.shortcutCommandDoc = void 0;
|
|
34109
|
+
exports2.buildClaudeSpawnEnv = exports2.hasClaudeLogin = exports2.isInsideClaudeCodeSession = exports2.createJsonSink = exports2.createLineSink = exports2.isCodexMcpConfigured = exports2.codexConfigPath = exports2.readProjectMcpServer = exports2.mcpRegistrarFor = exports2.codexMcpRegistrar = exports2.claudeMcpRegistrar = exports2.copilotMcpConfig = exports2.copilotGraphServer = exports2.CopilotRunner = exports2.CodexRunner = exports2.claudeModelArg = exports2.DefaultRunner = exports2.RunnerRegistry = exports2.targetPath = exports2.scopePaths = exports2.discoverAssets = exports2.commandBodyIsStale = exports2.readEpicTags = exports2.normalizeTags = exports2.normalizeTag = exports2.epicMatchesTags = exports2.applyTagEdit = exports2.MAX_TAG_LENGTH = exports2.EPIC_TAGS_KEY = exports2.inheritedContextNote = exports2.INHERITED_CONTEXT_MARKER = exports2.strictModeSection = exports2.resolveEpicStrictMode = exports2.epicStrictMode = exports2.commandBodyPredatesStrictMode = exports2.STRICT_MODE_KEY = exports2.STRICT_MODE_HEADING = exports2.setEpicWatched = exports2.setEpicListFlat = exports2.setEpicSort = exports2.setActiveEpic = exports2.recordEpicOpened = exports2.readEpicListFlat = exports2.readEpicSort = exports2.readEpicFocus = exports2.pushRecent = exports2.epicSortFrom = exports2.epicIdFromBranch = exports2.epicFocusFrom = exports2.WATCHED_EPICS_KEY = void 0;
|
|
34110
|
+
exports2.migrateRunState = exports2.stepIdentity = exports2.resolvePath = exports2.AutoReviewerError = exports2.runAutoReview = exports2.renderRunReport = exports2.verifyRun = exports2.runExecLoop = exports2.estimateCostUsd = exports2.providerAliases = exports2.ratesFromConfig = exports2.mergeRates = exports2.BUILTIN_RATES = exports2.unchangedProduces = exports2.snapshotProduces = exports2.checkBudget = exports2.weighStepProgress = exports2.isActiveStatus = exports2.isStepOptional = exports2.isRunComplete = exports2.deriveRunProgress = exports2.PipelineRunError = exports2.retryAutoReview = exports2.submitAutoReviewVerdict = exports2.dirtyUpstreamOf = exports2.rerunApprovedStep = exports2.canRerunApprovedStep = exports2.chooseStepModel = exports2.chooseStepSkill = exports2.requestStepUpdate = exports2.rerunStep = exports2.rejectStep = exports2.approveStep = exports2.undoStepDone = exports2.canUndoStepDone = exports2.markStepDone = exports2.canStartStep = exports2.startRun = exports2.activateBackendFromWorkspace = exports2.activateRunStateBackend = exports2.resolveRunStateBackend = exports2.GitRunStateStore = exports2.RUN_ID_PATTERN = exports2.FileRunStateStore = exports2.RunStateStore = exports2.harnessCapabilities = exports2.NO_HARNESS_CAPABILITIES = exports2.RunnerValidationError = exports2.validateRunnerExport = exports2.CustomRunnerLoader = void 0;
|
|
34111
|
+
exports2.nextEligiblePhase = exports2.resolveComposition = exports2.shortcutCommandId = exports2.getCanonicalPhase = exports2.isCanonicalPhase = exports2.BACKBONE_COMMAND_ID = exports2.CANONICAL_PHASE_IDS = exports2.CANONICAL_PHASES = exports2.renderTemplate = exports2.DEFAULT_GLOBAL_WORKFLOW_IDS = exports2.detectGlobalBuiltinSource = exports2.uninstallWorkflowGlobalsByIds = exports2.isWorkflowGloballyInstalled = exports2.installWorkflowGlobalsByIds = exports2.installGlobalDefaults = exports2.stepModelOptions = exports2.pickAgentModel = exports2.resolveProviderModel = exports2.isClaudeTierAlias = exports2.CLAUDE_TIER_ALIASES = exports2.FAST_MODEL = exports2.CODING_MODEL = exports2.PLANNING_MODEL = exports2.isBuiltinPreset = exports2.BUILTIN_PRESET_IDS = exports2.writeBuiltinAutoReviewValidators = exports2.resolvePrimaryStack = exports2.getSdlcArtifactTemplates = exports2.getBuiltinArtifactTemplates = exports2.phaseArtifactFileName = exports2.sdlcClaudeCommand = exports2.builtinClaudeCommand = exports2.loadAllBuiltinPresets = exports2.loadBuiltinPreset = exports2.planRecipeMigration = exports2.getBuiltinRecipeSummaries = exports2.getAllBuiltinPipelineSummaries = exports2.getSdlcBuiltinPipelineSummary = exports2.getBuiltinPipelineSummary = exports2.getBuiltinWorkflowByPipelineId = exports2.getBuiltinWorkflow = exports2.workflowSlug = exports2.builtinTemplatesRoot = exports2.pipelineCommandId = exports2.PHASES = exports2.BUILTIN_WORKFLOWS = exports2.withBackfilledStepNames = exports2.describeDrift = exports2.reconcileRunSteps = exports2.RUN_STATE_SCHEMA_VERSION = void 0;
|
|
34112
|
+
exports2.AIDLC_CORE_VERSION = exports2.AIDLC_CLI_GUIDE_TEXT = exports2.AIDLC_KNOWLEDGE = exports2.clearResolveCommandCache = exports2.resolveCommand = exports2.remapClaudePath = exports2.claudeConfigEnv = exports2.claudeJsonPath = exports2.isDefaultClaudeConfigDir = exports2.claudeConfigDir = exports2.resolveClaudeConfigDir = exports2.defaultClaudeConfigDir = exports2.getClaudeConfigDirOverride = exports2.setClaudeConfigDir = exports2.resolveDeclaredPath = exports2.expandHome = exports2.ProfileLoadError = exports2.UnknownStandardError = exports2.builtinProfiles = exports2.loadActiveProfile = exports2.loadProfile = exports2.listProfileManifests = exports2.resolveStandard = exports2.workspaceStandard = exports2.isBuiltinProfileId = exports2.ProfileSchema = exports2.TRACE_RULES = exports2.PROFILES_DIR = exports2.DEFAULT_PROFILE_ID = exports2.BUILTIN_PROFILE_IDS = exports2.setEpicMemoryHook = exports2.isEpicMemoryHookEnabled = exports2.installAnnotationTools = exports2.relativeEpicRoot = exports2.provisionDeclaredWorkflows = exports2.provisionWorkflowFiles = exports2.writeWorkflowArtifactTemplates = exports2.writeWorkflowCommands = exports2.provisionShortcutDocs = exports2.writeTwoLayerCommands = exports2.shortcutCommandDoc = exports2.backboneCommandDoc = exports2.unprovisionedPhases = void 0;
|
|
34041
34113
|
var WorkspaceSchema_1 = require_WorkspaceSchema();
|
|
34042
34114
|
Object.defineProperty(exports2, "WorkspaceSchema", { enumerable: true, get: function() {
|
|
34043
34115
|
return WorkspaceSchema_1.WorkspaceSchema;
|
|
@@ -34575,6 +34647,13 @@ var require_dist = __commonJS({
|
|
|
34575
34647
|
Object.defineProperty(exports2, "strictModeSection", { enumerable: true, get: function() {
|
|
34576
34648
|
return strictMode_1.strictModeSection;
|
|
34577
34649
|
} });
|
|
34650
|
+
var inheritedContext_1 = require_inheritedContext();
|
|
34651
|
+
Object.defineProperty(exports2, "INHERITED_CONTEXT_MARKER", { enumerable: true, get: function() {
|
|
34652
|
+
return inheritedContext_1.INHERITED_CONTEXT_MARKER;
|
|
34653
|
+
} });
|
|
34654
|
+
Object.defineProperty(exports2, "inheritedContextNote", { enumerable: true, get: function() {
|
|
34655
|
+
return inheritedContext_1.inheritedContextNote;
|
|
34656
|
+
} });
|
|
34578
34657
|
var epicTags_1 = require_epicTags();
|
|
34579
34658
|
Object.defineProperty(exports2, "EPIC_TAGS_KEY", { enumerable: true, get: function() {
|
|
34580
34659
|
return epicTags_1.EPIC_TAGS_KEY;
|
|
@@ -43796,7 +43875,7 @@ var require_package = __commonJS({
|
|
|
43796
43875
|
"package.json"(exports2, module2) {
|
|
43797
43876
|
module2.exports = {
|
|
43798
43877
|
name: "@delete101020/aidlc",
|
|
43799
|
-
version: "4.0.
|
|
43878
|
+
version: "4.0.37",
|
|
43800
43879
|
description: "AIDLC Native CLI, a fork of AIDLC \u2014 drive Claude through the six-stage AI-Native SDLC Playbook: Plan \u2192 Design \u2192 Build \u2192 Test \u2192 Deploy \u2192 Maintain, with artifact gates, requirements traceability, an incident loop back to Plan, and Spec Kit support.",
|
|
43801
43880
|
license: "MIT",
|
|
43802
43881
|
repository: {
|
|
@@ -50515,7 +50594,7 @@ Run ${import_chalk15.default.cyan(`${runCmd} ${epicId}`)} in Claude to begin.`);
|
|
|
50515
50594
|
throw err;
|
|
50516
50595
|
}
|
|
50517
50596
|
});
|
|
50518
|
-
cmd.command("follow-up <parentEpic>").description("Open a follow-up epic of <parentEpic> to park work found while doing it \u2014 nothing runs yet").requiredOption("--title <title>", "what the follow-up is").option("--desc <description>", "the note: what turned up, and why it is not part of the parent").option("--recipe <id>", "recipe for the follow-up (default: the one the parent runs on)").option("--pipeline <id>", "use an existing pipeline as-is (default: the parent's workflow)").option("--from <pipelineId>", "override the recipe's source pipeline").option("--epic <id>", "id for the follow-up (default: <parentEpic>-F<n>)").option("--input <kv>", "capability input as key=value (repeatable)", collectKv, []).option("--tag <tag>", "extra tag (repeatable) \u2014 added to the ones inherited from the parent", collectKv, []).option("--no-inherit-tags", "do not copy the parent's tags").option("--no-strict", "work to the size of this epic \u2014 no invented NFR / risk / alternatives sections").option("--json", "output the result as JSON").action((parentEpic, opts, actionCmd) => {
|
|
50597
|
+
cmd.command("follow-up <parentEpic>").description("Open a follow-up epic of <parentEpic> to park work found while doing it \u2014 nothing runs yet").requiredOption("--title <title>", "what the follow-up is").option("--desc <description>", "the note: what turned up, and why it is not part of the parent").option("--recipe <id>", "recipe for the follow-up (default: the one the parent runs on)").option("--pipeline <id>", "use an existing pipeline as-is (default: the parent's workflow)").option("--from <pipelineId>", "override the recipe's source pipeline").option("--epic <id>", "id for the follow-up (default: <parentEpic>-F<n>)").option("--also <epic>", "another epic this one also follows (repeatable) \u2014 linked and read for context; <parentEpic> stays the one it is grouped under", collectKv, []).option("--input <kv>", "capability input as key=value (repeatable)", collectKv, []).option("--tag <tag>", "extra tag (repeatable) \u2014 added to the ones inherited from the parent", collectKv, []).option("--no-inherit-tags", "do not copy the parent's tags").option("--no-strict", "work to the size of this epic \u2014 no invented NFR / risk / alternatives sections").option("--json", "output the result as JSON").action((parentEpic, opts, actionCmd) => {
|
|
50519
50598
|
const root = resolveWorkspaceRoot(actionCmd);
|
|
50520
50599
|
const doc = requireYaml(root);
|
|
50521
50600
|
if (opts.recipe && opts.pipeline) {
|
|
@@ -50537,6 +50616,14 @@ Run ${import_chalk15.default.cyan(`${runCmd} ${epicId}`)} in Claude to begin.`);
|
|
|
50537
50616
|
console.error(import_chalk15.default.red(err instanceof Error ? err.message : String(err)));
|
|
50538
50617
|
process.exit(1);
|
|
50539
50618
|
}
|
|
50619
|
+
for (const other of opts.also) {
|
|
50620
|
+
try {
|
|
50621
|
+
(0, import_core19.followUpDefaults)(root, doc, other.trim());
|
|
50622
|
+
} catch (err) {
|
|
50623
|
+
console.error(import_chalk15.default.red(err instanceof Error ? err.message : String(err)));
|
|
50624
|
+
process.exit(1);
|
|
50625
|
+
}
|
|
50626
|
+
}
|
|
50540
50627
|
const epicId = opts.epic?.trim() || defaults.epicId;
|
|
50541
50628
|
const target = opts.pipeline ? { pipeline: opts.pipeline } : opts.recipe ? { recipe: opts.recipe } : defaults.target?.kind === "pipeline" ? { pipeline: defaults.target.id } : defaults.target ? { recipe: defaults.target.id } : void 0;
|
|
50542
50629
|
if (!target) {
|
|
@@ -50563,7 +50650,7 @@ Run ${import_chalk15.default.cyan(`${runCmd} ${epicId}`)} in Claude to begin.`);
|
|
|
50563
50650
|
description: opts.desc?.trim() ?? "",
|
|
50564
50651
|
target: { kind: "pipeline", id: pipelineCfg.id },
|
|
50565
50652
|
agents,
|
|
50566
|
-
inputs: (0, import_core19.withFollowUpProvenance)(inputs, parentEpic, defaults.key),
|
|
50653
|
+
inputs: (0, import_core19.withFollowUpProvenance)(inputs, parentEpic, defaults.key, opts.also),
|
|
50567
50654
|
pipeline: pipelineCfg,
|
|
50568
50655
|
strictMode: opts.strict,
|
|
50569
50656
|
tags
|
|
@@ -50574,12 +50661,14 @@ Run ${import_chalk15.default.cyan(`${runCmd} ${epicId}`)} in Claude to begin.`);
|
|
|
50574
50661
|
epicDir,
|
|
50575
50662
|
pipeline: pipelineCfg.id,
|
|
50576
50663
|
fromEpic: parentEpic,
|
|
50664
|
+
alsoFrom: opts.also,
|
|
50577
50665
|
followUpKey: defaults.key,
|
|
50578
50666
|
tags
|
|
50579
50667
|
}, null, 2));
|
|
50580
50668
|
return;
|
|
50581
50669
|
}
|
|
50582
|
-
|
|
50670
|
+
const others = opts.also.length > 0 ? ` (also ${opts.also.map((id) => import_chalk15.default.bold(id)).join(", ")})` : "";
|
|
50671
|
+
console.log(import_chalk15.default.green("\u2714") + ` Opened follow-up ${import_chalk15.default.bold(epicId)} of ${import_chalk15.default.bold(parentEpic)}${others}`);
|
|
50583
50672
|
console.log(import_chalk15.default.dim(` Pipeline: ${pipelineCfg.id}`));
|
|
50584
50673
|
console.log(import_chalk15.default.dim(` Steps: ${agents.join(" \u2192 ")}`));
|
|
50585
50674
|
console.log(import_chalk15.default.dim(` Dir: ${epicDir}`));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@delete101020/aidlc",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.37",
|
|
4
4
|
"description": "AIDLC Native CLI, a fork of AIDLC — drive Claude through the six-stage AI-Native SDLC Playbook: Plan → Design → Build → Test → Deploy → Maintain, with artifact gates, requirements traceability, an incident loop back to Plan, and Spec Kit support.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|