@turri-dev/cli 0.1.7-next.ccadaa0 → 0.1.7-next.f0d55df
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
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<p align="center"><img src="docs/images/turri-banner.
|
|
1
|
+
<p align="center"><img src="docs/images/turri-banner.gif" alt="turri, beside its mark - the first coding agent with the power of regenerative software: npm install -g @turri-dev/cli - and a pixel jellyfish regenerating, from a polyp on the sea floor"></p>
|
|
2
2
|
|
|
3
3
|
<h1 align="center">turri<br>the first coding agent with the power of<br>regenerative software<br> </h1>
|
|
4
4
|
|
|
@@ -101,8 +101,6 @@ With **turri** you work on the durable intent. You say what the software must do
|
|
|
101
101
|
|
|
102
102
|
## How it works
|
|
103
103
|
|
|
104
|
-
<p align="center"><img src="docs/images/turri-screenshot.png" width="900" alt="turri in the terminal: on the left the conversation, where /regenerate plans a project's modules and a coding agent works through one of them; on the right the spec map of that module's ***plain, each functionality marked as regenerated or being worked on"></p>
|
|
105
|
-
|
|
106
104
|
**turri** captures the durable intent in [\*\*\*plain](https://plainlang.org/), a language for saying what software should do. \*\*\*plain breaks the intent down into functionalities - small units, each a single thing the software does - and **turri** regenerates the code from them piece by piece.
|
|
107
105
|
|
|
108
106
|
1. **Define.** You say what the software should do; **turri** writes it down as \*\*\*plain.
|
|
@@ -281,6 +281,8 @@ export interface ModuleCompletion {
|
|
|
281
281
|
completed: number;
|
|
282
282
|
/** Of the completed ones, those its conformance tests are recorded as written for, as the spec has them now. */
|
|
283
283
|
conformanceTested: number;
|
|
284
|
+
/** Those conformance-tested ones, by number: for a host that shows each functional spec's state. */
|
|
285
|
+
tested: string[];
|
|
284
286
|
/** Its functional specs not completed, by number. */
|
|
285
287
|
incomplete: string[];
|
|
286
288
|
}
|
package/dist/regenerate/loop.js
CHANGED
|
@@ -121,7 +121,7 @@ export function functionalityCompletion(plainFile) {
|
|
|
121
121
|
if (readRecord(entry.buildDir) !== null)
|
|
122
122
|
delivered = index;
|
|
123
123
|
});
|
|
124
|
-
const counts = chain.map((entry) => ({ module: entry.moduleName, specified: entry.frids.length, completed: 0, conformanceTested: 0, incomplete: [...entry.frids] }));
|
|
124
|
+
const counts = chain.map((entry) => ({ module: entry.moduleName, specified: entry.frids.length, completed: 0, conformanceTested: 0, tested: [], incomplete: [...entry.frids] }));
|
|
125
125
|
if (delivered === -1)
|
|
126
126
|
return { codebase: tipOf(chain).buildDir, modules: counts };
|
|
127
127
|
const codebase = chain.slice(0, delivered + 1);
|
|
@@ -155,7 +155,8 @@ export function functionalityCompletion(plainFile) {
|
|
|
155
155
|
const completed = entry.frids.filter((frid) => !touched.has(`${entry.moduleName}:${frid}`));
|
|
156
156
|
const tested = (readRecord(conformanceDirFor(entry.moduleName, modulesRoot(projectDirOf(entry.plainFile))))?.[FUNCTIONAL_REQUIREMENTS] ?? []).filter((item) => item.frid !== undefined && item.markdown.trim() === specText(entry.moduleName, item.frid));
|
|
157
157
|
count.completed = completed.length;
|
|
158
|
-
count.
|
|
158
|
+
count.tested = completed.filter((frid) => tested.some((item) => item.frid === frid));
|
|
159
|
+
count.conformanceTested = count.tested.length;
|
|
159
160
|
count.incomplete = entry.frids.filter((frid) => !completed.includes(frid));
|
|
160
161
|
});
|
|
161
162
|
return { codebase: tip.buildDir, modules: counts };
|
|
Binary file
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|