ralphctl 0.4.1 → 0.4.3
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 +13 -11
- package/dist/{add-CIM72NE3.mjs → add-MG26JWBP.mjs} +6 -6
- package/dist/{add-GX7P7XTT.mjs → add-ZZYL4BSF.mjs} +5 -4
- package/dist/chunk-2FT37OZX.mjs +1071 -0
- package/dist/{chunk-CTP2A436.mjs → chunk-D2HWXEHH.mjs} +9 -2
- package/dist/{chunk-JOQO4HMM.mjs → chunk-EGUFQNRB.mjs} +10 -10
- package/dist/{chunk-3HJNVQ7N.mjs → chunk-LCY32RW4.mjs} +621 -976
- package/dist/{chunk-NUYQK5MN.mjs → chunk-LDSG7G2T.mjs} +1 -1
- package/dist/{chunk-7JLZQICD.mjs → chunk-MDE6KPJQ.mjs} +6 -6
- package/dist/{chunk-3QBEBKMZ.mjs → chunk-Q4AVHUZL.mjs} +7 -7
- package/dist/{chunk-YCDUVPRT.mjs → chunk-RQGD5WS6.mjs} +4 -72
- package/dist/{chunk-D2YGPLIV.mjs → chunk-TDBEEHTS.mjs} +213 -8
- package/dist/{chunk-SM4GGZSU.mjs → chunk-WOMGKKZY.mjs} +152 -179
- package/dist/{chunk-FKMKOWLA.mjs → chunk-WZTY77GY.mjs} +75 -1
- package/dist/cli.mjs +68 -19
- package/dist/{create-7WFSCMP4.mjs → create-PQK6KKRD.mjs} +5 -5
- package/dist/{handle-BBAZJ44Y.mjs → handle-SYVCFI6Y.mjs} +1 -1
- package/dist/{mount-2N6H5CWA.mjs → mount-2ANLHHQE.mjs} +556 -318
- package/dist/{project-2IE7VWDB.mjs → project-JF47ZWMF.mjs} +2 -2
- package/dist/prompts/check-script-discover.md +69 -0
- package/dist/prompts/ideate-auto.md +26 -1
- package/dist/prompts/ideate.md +5 -1
- package/dist/prompts/plan-auto.md +30 -2
- package/dist/prompts/plan-common-examples.md +82 -0
- package/dist/prompts/plan-common.md +26 -78
- package/dist/prompts/plan-interactive.md +6 -2
- package/dist/prompts/repo-onboard.md +111 -0
- package/dist/prompts/sprint-feedback.md +6 -2
- package/dist/prompts/task-evaluation.md +25 -10
- package/dist/prompts/task-execution.md +13 -13
- package/dist/prompts/ticket-refine.md +4 -0
- package/dist/prompts/validation-checklist.md +4 -0
- package/dist/{resolver-EOE5WUMV.mjs → resolver-PG2DZEBX.mjs} +3 -3
- package/dist/{sprint-OGOFEJJH.mjs → sprint-54DOSIJK.mjs} +3 -3
- package/dist/{start-IUDCXIEA.mjs → start-2SZTBKGF.mjs} +7 -5
- package/package.json +6 -6
package/dist/cli.mjs
CHANGED
|
@@ -41,35 +41,39 @@ import {
|
|
|
41
41
|
ticketRefineCommand,
|
|
42
42
|
ticketRemoveCommand,
|
|
43
43
|
ticketShowCommand
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-WOMGKKZY.mjs";
|
|
45
45
|
import {
|
|
46
46
|
projectAddCommand
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-TDBEEHTS.mjs";
|
|
48
48
|
import {
|
|
49
49
|
sprintCreateCommand
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-Q4AVHUZL.mjs";
|
|
51
51
|
import {
|
|
52
52
|
ticketAddCommand
|
|
53
|
-
} from "./chunk-
|
|
54
|
-
import "./chunk-NUYQK5MN.mjs";
|
|
53
|
+
} from "./chunk-MDE6KPJQ.mjs";
|
|
55
54
|
import {
|
|
55
|
+
createOnboardPipeline,
|
|
56
|
+
executePipeline,
|
|
56
57
|
getTasks,
|
|
57
58
|
sprintStartCommand
|
|
58
|
-
} from "./chunk-
|
|
59
|
+
} from "./chunk-LCY32RW4.mjs";
|
|
60
|
+
import "./chunk-2FT37OZX.mjs";
|
|
59
61
|
import {
|
|
60
62
|
truncate
|
|
61
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-EGUFQNRB.mjs";
|
|
62
64
|
import {
|
|
63
|
-
EXIT_ERROR
|
|
65
|
+
EXIT_ERROR,
|
|
66
|
+
exitWithCode
|
|
64
67
|
} from "./chunk-CFUVE2BP.mjs";
|
|
65
68
|
import {
|
|
69
|
+
getSharedDeps,
|
|
66
70
|
setSharedDeps
|
|
67
71
|
} from "./chunk-747KW2RW.mjs";
|
|
72
|
+
import "./chunk-LDSG7G2T.mjs";
|
|
68
73
|
import {
|
|
69
74
|
getCurrentSprintOrThrow,
|
|
70
|
-
getSprint
|
|
71
|
-
|
|
72
|
-
} from "./chunk-YCDUVPRT.mjs";
|
|
75
|
+
getSprint
|
|
76
|
+
} from "./chunk-RQGD5WS6.mjs";
|
|
73
77
|
import {
|
|
74
78
|
colors,
|
|
75
79
|
error,
|
|
@@ -78,9 +82,10 @@ import {
|
|
|
78
82
|
log,
|
|
79
83
|
printBanner,
|
|
80
84
|
printHeader,
|
|
85
|
+
setCurrentSprint,
|
|
81
86
|
showError,
|
|
82
87
|
showSuccess
|
|
83
|
-
} from "./chunk-
|
|
88
|
+
} from "./chunk-WZTY77GY.mjs";
|
|
84
89
|
import {
|
|
85
90
|
ensureError,
|
|
86
91
|
wrapAsync
|
|
@@ -88,7 +93,7 @@ import {
|
|
|
88
93
|
import {
|
|
89
94
|
ensureDir,
|
|
90
95
|
getDataDir
|
|
91
|
-
} from "./chunk-
|
|
96
|
+
} from "./chunk-D2HWXEHH.mjs";
|
|
92
97
|
import {
|
|
93
98
|
DomainError
|
|
94
99
|
} from "./chunk-57UWLHRH.mjs";
|
|
@@ -96,6 +101,42 @@ import {
|
|
|
96
101
|
// src/application/entrypoint.ts
|
|
97
102
|
import { Command } from "commander";
|
|
98
103
|
|
|
104
|
+
// src/integration/cli/commands/project/onboard.ts
|
|
105
|
+
async function projectOnboardCommand(options) {
|
|
106
|
+
const shared = getSharedDeps();
|
|
107
|
+
const pipeline = createOnboardPipeline(shared, options);
|
|
108
|
+
const initialContext = {
|
|
109
|
+
sprintId: "",
|
|
110
|
+
projectName: options.project
|
|
111
|
+
};
|
|
112
|
+
const result = await executePipeline(pipeline, initialContext);
|
|
113
|
+
if (!result.ok) {
|
|
114
|
+
showError(`Onboarding failed: ${result.error.message}`);
|
|
115
|
+
exitWithCode(EXIT_ERROR);
|
|
116
|
+
}
|
|
117
|
+
const ctx = result.value.context;
|
|
118
|
+
if (options.dryRun) {
|
|
119
|
+
shared.logger.info("Dry run \u2014 no files written.");
|
|
120
|
+
if (ctx.agentsMdDraft) {
|
|
121
|
+
shared.logger.info(
|
|
122
|
+
`Project context file draft (${String(ctx.agentsMdDraft.split("\n").length)} lines) ready for review.`
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
if (ctx.alreadyCurrent) {
|
|
128
|
+
shared.logger.info("Already up to date \u2014 no changes needed.");
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const fields = [];
|
|
132
|
+
if (ctx.writtenPath) fields.push(["Project context file", ctx.writtenPath]);
|
|
133
|
+
if (ctx.checkScriptFinal) fields.push(["Check script", ctx.checkScriptFinal]);
|
|
134
|
+
if (ctx.driftWarnings && ctx.driftWarnings.length > 0) {
|
|
135
|
+
fields.push(["Warnings", ctx.driftWarnings.join("; ")]);
|
|
136
|
+
}
|
|
137
|
+
showSuccess("Repository onboarded", fields);
|
|
138
|
+
}
|
|
139
|
+
|
|
99
140
|
// src/integration/cli/commands/project/register.ts
|
|
100
141
|
function registerProjectCommands(program2) {
|
|
101
142
|
const project = program2.command("project").description("Manage projects");
|
|
@@ -123,6 +164,14 @@ Examples:
|
|
|
123
164
|
}
|
|
124
165
|
);
|
|
125
166
|
project.command("list").description("List all projects").action(projectListCommand);
|
|
167
|
+
project.command("onboard <project-name>").description("AI-assisted per-repo onboarding (project context file + check script)").option("--repo <name>", "Target repository (required when project has multiple repos)").option("--dry-run", "Generate the proposal but do not write files").option("--auto", "Skip interactive review; accept the AI proposal as-is").action(async (projectName, opts) => {
|
|
168
|
+
await projectOnboardCommand({
|
|
169
|
+
project: projectName,
|
|
170
|
+
repo: opts.repo,
|
|
171
|
+
dryRun: opts.dryRun === true,
|
|
172
|
+
auto: opts.auto === true
|
|
173
|
+
});
|
|
174
|
+
});
|
|
126
175
|
project.command("show [name]").description("Show project details").action(async (name) => {
|
|
127
176
|
await projectShowCommand(name ? [name] : []);
|
|
128
177
|
});
|
|
@@ -698,14 +747,14 @@ function isQuietCommand(argv) {
|
|
|
698
747
|
}
|
|
699
748
|
async function main() {
|
|
700
749
|
if (process.env["COMP_CWORD"] && process.env["COMP_POINT"] && process.env["COMP_LINE"]) {
|
|
701
|
-
const { handleCompletionRequest } = await import("./handle-
|
|
750
|
+
const { handleCompletionRequest } = await import("./handle-SYVCFI6Y.mjs");
|
|
702
751
|
if (await handleCompletionRequest(program)) return;
|
|
703
752
|
}
|
|
704
753
|
const argv = process.argv;
|
|
705
754
|
const isBare = argv.length <= 2;
|
|
706
755
|
const isInteractive = argv[2] === "interactive";
|
|
707
756
|
if (isBare || isInteractive) {
|
|
708
|
-
const { mountInkApp } = await import("./mount-
|
|
757
|
+
const { mountInkApp } = await import("./mount-2ANLHHQE.mjs");
|
|
709
758
|
const { fallback } = await mountInkApp({ initialView: "repl" });
|
|
710
759
|
if (!fallback) return;
|
|
711
760
|
printBanner();
|
|
@@ -716,14 +765,14 @@ async function main() {
|
|
|
716
765
|
return;
|
|
717
766
|
}
|
|
718
767
|
if (argv[2] === "sprint" && argv[3] === "start") {
|
|
719
|
-
const { parseSprintStartArgs } = await import("./start-
|
|
768
|
+
const { parseSprintStartArgs } = await import("./start-2SZTBKGF.mjs");
|
|
720
769
|
const parsed = parseSprintStartArgs(argv.slice(4));
|
|
721
770
|
if (parsed.ok) {
|
|
722
|
-
const { mountInkApp } = await import("./mount-
|
|
723
|
-
const { getSharedDeps } = await import("./bootstrap-FMHG6DRY.mjs");
|
|
771
|
+
const { mountInkApp } = await import("./mount-2ANLHHQE.mjs");
|
|
772
|
+
const { getSharedDeps: getSharedDeps2 } = await import("./bootstrap-FMHG6DRY.mjs");
|
|
724
773
|
let sprintId;
|
|
725
774
|
try {
|
|
726
|
-
sprintId = await
|
|
775
|
+
sprintId = await getSharedDeps2().persistence.resolveSprintId(parsed.value.sprintId);
|
|
727
776
|
} catch {
|
|
728
777
|
sprintId = void 0;
|
|
729
778
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
sprintCreateCommand
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-NUYQK5MN.mjs";
|
|
4
|
+
} from "./chunk-Q4AVHUZL.mjs";
|
|
6
5
|
import "./chunk-CFUVE2BP.mjs";
|
|
7
6
|
import "./chunk-747KW2RW.mjs";
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-LDSG7G2T.mjs";
|
|
8
|
+
import "./chunk-RQGD5WS6.mjs";
|
|
9
|
+
import "./chunk-WZTY77GY.mjs";
|
|
10
10
|
import "./chunk-IWXBJD2D.mjs";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-D2HWXEHH.mjs";
|
|
12
12
|
import "./chunk-57UWLHRH.mjs";
|
|
13
13
|
export {
|
|
14
14
|
sprintCreateCommand
|
|
@@ -7,7 +7,7 @@ async function handleCompletionRequest(program) {
|
|
|
7
7
|
return false;
|
|
8
8
|
}
|
|
9
9
|
const tabtab = (await import("tabtab")).default;
|
|
10
|
-
const { resolveCompletions } = await import("./resolver-
|
|
10
|
+
const { resolveCompletions } = await import("./resolver-PG2DZEBX.mjs");
|
|
11
11
|
const tabEnv = tabtab.parseEnv(env);
|
|
12
12
|
const completions = await resolveCompletions(program, {
|
|
13
13
|
line: tabEnv.line,
|