@intentius/chant 0.104.1 → 0.104.2
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/op/activities/factory.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/op/activities/factory.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -467,9 +467,14 @@ export interface FactoryBuildArgs {
|
|
|
467
467
|
/** Run the builder hook in the worktree, unless understand said not to build (#3406). */
|
|
468
468
|
export async function factoryBuild(args: FactoryBuildArgs): Promise<FactoryBuildResult> {
|
|
469
469
|
const lease = leaseOf(args.lease, "factoryBuild");
|
|
470
|
-
if (args.ask.outcome !== null) return { ran: false, finished: false, exitCode: null, reverted: [], note: `understand answered ${args.ask.understand}: nothing is built`, report: null };
|
|
471
|
-
// A kept ask opens before it is built: chant writes the state in the worktree, so it goes with the build.
|
|
472
470
|
const cwd = args.cwd ?? process.cwd();
|
|
471
|
+
if (args.ask.outcome !== null) {
|
|
472
|
+
// Nothing is built, but Record still writes the item's outcome (dropped) in the worktree, so an ask
|
|
473
|
+
// that lives only in the checkout, as every ask written from a surface does, is carried there first.
|
|
474
|
+
await carryItem(cwd, lease.worktree, lease.item);
|
|
475
|
+
return { ran: false, finished: false, exitCode: null, reverted: [], note: `understand answered ${args.ask.understand}: nothing is built`, report: null };
|
|
476
|
+
}
|
|
477
|
+
// A kept ask opens before it is built: chant writes the state in the worktree, so it goes with the build.
|
|
473
478
|
await freshStart(cwd, lease.worktree, lease.item);
|
|
474
479
|
await carryItem(cwd, lease.worktree, lease.item);
|
|
475
480
|
const w = await readWork(lease.worktree);
|
|
@@ -523,7 +528,8 @@ export interface FactoryCheckArgs {
|
|
|
523
528
|
/** Run the check and attach its result as evidence to each criterion the factory ticks (#3406 rule 5). */
|
|
524
529
|
export async function factoryCheck(args: FactoryCheckArgs): Promise<FactoryCheckResult> {
|
|
525
530
|
const lease = leaseOf(args.lease, "factoryCheck");
|
|
526
|
-
|
|
531
|
+
// A build whose guard put changes back is not done whatever its check says, so it is not checked.
|
|
532
|
+
if (!args.build.ran || !args.build.finished || args.build.reverted.length > 0) return { ran: false, ok: false, command: null, evidence: [], log: null, report: null };
|
|
527
533
|
let command = args.check ?? null;
|
|
528
534
|
if (command === null) {
|
|
529
535
|
const { readDeclaration } = await import("../../workspace/declaration");
|
|
@@ -575,7 +581,10 @@ export interface FactoryRecordArgs {
|
|
|
575
581
|
/** The decisions a done build proposes it implements, from the intent graph of each path it changed (studio#243). */
|
|
576
582
|
async function proposals(worktree: string, base: string, already: string[]): Promise<{ decision: string; paths: string[] }[]> {
|
|
577
583
|
const { proposeImplements } = await import("../../workspace/factory-rules");
|
|
578
|
-
|
|
584
|
+
// What the build changed since the base, the files it added among them: they are untracked until Record commits.
|
|
585
|
+
const tracked = (await gitOut(["diff", "--name-only", base], worktree)).out.split("\n");
|
|
586
|
+
const added = (await gitOut(["ls-files", "--others", "--exclude-standard"], worktree)).out.split("\n");
|
|
587
|
+
const changed = [...new Set([...tracked, ...added])].filter((p) => p && !p.startsWith(".chant/")).sort();
|
|
579
588
|
const { intentGraph } = await import("../../workspace/intent");
|
|
580
589
|
const rows: { path: string; decisions: { id: string; state: string | null; granularity: string }[] }[] = [];
|
|
581
590
|
for (const path of changed.slice(0, 20)) {
|
|
@@ -148,6 +148,20 @@ describe("the factory reference Op (#3406)", () => {
|
|
|
148
148
|
expect(onBranch(dir, "W-103", "work/W-103-an-ask.md")).toMatchObject({ state: "dropped" });
|
|
149
149
|
expect(existsSync(join(dir, "app", "W-103.txt"))).toBe(false);
|
|
150
150
|
expect(readFileSync(join(dir, "work", "W-101-the-feature.md"), "utf-8")).toContain('"state": "open"');
|
|
151
|
+
|
|
152
|
+
// An ask written from a surface lives only in the checkout until it is built; refused, it is still dropped.
|
|
153
|
+
writeFileSync(join(dir, "work", "W-104-an-uncommitted-ask.md"), item("W-104", { state: "proposed", source: { ask: { said: "Make the page green.", by: "alice", via: "hud" } } }));
|
|
154
|
+
await run(dir, "W-104");
|
|
155
|
+
const asked = await workspacePoints({ cwd: dir });
|
|
156
|
+
if ("error" in asked) throw new Error(asked.error.message);
|
|
157
|
+
const q = asked.questions.find((x) => x.point === "understand" && x.open && JSON.stringify(x).includes("W-104"));
|
|
158
|
+
expect(q).toBeDefined();
|
|
159
|
+
expect("error" in (await answerPoint({ cwd: dir, id: q!.id, answer: "refuse", by: ["alice"] }))).toBe(false);
|
|
160
|
+
git(["add", "answers"], dir);
|
|
161
|
+
git(["commit", "-q", "-m", "refuse W-104"], dir);
|
|
162
|
+
const sixth = await run(dir, "W-104");
|
|
163
|
+
expect(sixth.workLease).toMatchObject({ item: "W-104", outcome: "dropped" });
|
|
164
|
+
expect(onBranch(dir, "W-104", "work/W-104-an-uncommitted-ask.md")).toMatchObject({ state: "dropped" });
|
|
151
165
|
});
|
|
152
166
|
}, 120_000);
|
|
153
167
|
});
|