@yagni-app/code-staging 1.1.4-staging.1423.1 → 1.1.4-staging.1425.1
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
|
@@ -23,6 +23,19 @@ correct, autonomous work than a coding agent that starts blank.
|
|
|
23
23
|
npm install -g @yagni-app/code
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
+
Or use the installer, which also repairs an npm global prefix your user
|
|
27
|
+
cannot write to (common on managed machines) without sudo:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# macOS / Linux
|
|
31
|
+
curl -fsSL https://yagni.app/install.sh | sh
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
```powershell
|
|
35
|
+
# Windows (PowerShell)
|
|
36
|
+
irm https://yagni.app/install.ps1 | iex
|
|
37
|
+
```
|
|
38
|
+
|
|
26
39
|
Requires Node.js 22.19 or newer (`node --version`); an older Node stops at
|
|
27
40
|
launch with an upgrade message instead of crashing mid-session.
|
|
28
41
|
|
|
@@ -19,7 +19,12 @@ export declare const RECORD_NEVER: string;
|
|
|
19
19
|
* How the decision text itself must read. The ledger shows the decision as
|
|
20
20
|
* the headline and the question beneath it, so an answer-shaped decision
|
|
21
21
|
* ("No. Surface the decline.") reads as a fragment on every surface that
|
|
22
|
-
* renders it
|
|
22
|
+
* renders it, and a decision that carries its own reasoning reads as a
|
|
23
|
+
* paragraph in headline type. The ruling is the decision; the constraints,
|
|
24
|
+
* specifics, and reasoning belong in the rationale, where retrieval indexes
|
|
25
|
+
* them just the same (the embedding document is question + decision +
|
|
26
|
+
* rationale) and contested detection, which compares decision against
|
|
27
|
+
* decision, is not muddied by shared context words.
|
|
23
28
|
*/
|
|
24
29
|
export declare const DECISION_STATEMENT: string;
|
|
25
30
|
/**
|
|
@@ -27,5 +32,5 @@ export declare const DECISION_STATEMENT: string;
|
|
|
27
32
|
* never, and how the decision text must read, so every surface that records
|
|
28
33
|
* a decision produces one the headline-first ledger can render whole.
|
|
29
34
|
*/
|
|
30
|
-
export declare const RECORD_DECISION_RUBRIC = "Record a decision only when it is consequential: a product-intent, architecture, or team-convention call that another engineer would need to know and that is not already written down, especially one a human just settled by answering a question or correcting you. Never record taste, styling, naming of a local variable, formatting, a workaround, a restatement of the code change, or anything the user is still experimenting with; when in doubt, do not record it. Write the decision as a standalone statement that reads without the question: name the subject and what was chosen (\"Checkout surfaces a declined card to the customer instead of retrying it\"), never a bare yes or no or an answer that only makes sense under the question.";
|
|
35
|
+
export declare const RECORD_DECISION_RUBRIC = "Record a decision only when it is consequential: a product-intent, architecture, or team-convention call that another engineer would need to know and that is not already written down, especially one a human just settled by answering a question or correcting you. Never record taste, styling, naming of a local variable, formatting, a workaround, a restatement of the code change, or anything the user is still experimenting with; when in doubt, do not record it. Write the decision as a standalone statement that reads without the question: name the subject and what was chosen (\"Checkout surfaces a declined card to the customer instead of retrying it\"), never a bare yes or no or an answer that only makes sense under the question. Keep the decision to the ruling itself, one or two sentences; put the constraints, specifics, and reasoning behind it in the rationale, not the decision.";
|
|
31
36
|
//# sourceMappingURL=decisionRubric.d.ts.map
|
|
@@ -25,12 +25,18 @@ export const RECORD_NEVER = "Never record taste, styling, naming of a local vari
|
|
|
25
25
|
* How the decision text itself must read. The ledger shows the decision as
|
|
26
26
|
* the headline and the question beneath it, so an answer-shaped decision
|
|
27
27
|
* ("No. Surface the decline.") reads as a fragment on every surface that
|
|
28
|
-
* renders it
|
|
28
|
+
* renders it, and a decision that carries its own reasoning reads as a
|
|
29
|
+
* paragraph in headline type. The ruling is the decision; the constraints,
|
|
30
|
+
* specifics, and reasoning belong in the rationale, where retrieval indexes
|
|
31
|
+
* them just the same (the embedding document is question + decision +
|
|
32
|
+
* rationale) and contested detection, which compares decision against
|
|
33
|
+
* decision, is not muddied by shared context words.
|
|
29
34
|
*/
|
|
30
35
|
export const DECISION_STATEMENT = "Write the decision as a standalone statement that reads without the question: name " +
|
|
31
36
|
"the subject and what was chosen (\"Checkout surfaces a declined card to the customer " +
|
|
32
37
|
"instead of retrying it\"), never a bare yes or no or an answer that only makes sense " +
|
|
33
|
-
"under the question."
|
|
38
|
+
"under the question. Keep the decision to the ruling itself, one or two sentences; put " +
|
|
39
|
+
"the constraints, specifics, and reasoning behind it in the rationale, not the decision.";
|
|
34
40
|
/**
|
|
35
41
|
* The rubric as one paragraph for persona bodies and task templates: when,
|
|
36
42
|
* never, and how the decision text must read, so every surface that records
|
|
@@ -33,7 +33,11 @@ const parameters = Type.Object({
|
|
|
33
33
|
question: Type.String({ description: "The question that was decided, as another engineer would ask it." }),
|
|
34
34
|
decision: Type.String({ description: `The direction taken. ${DECISION_STATEMENT}` }),
|
|
35
35
|
kind: Type.Union([Type.Literal("product"), Type.Literal("architecture"), Type.Literal("convention")], { description: `What sort of call this is: ${DECISION_KIND_DESCRIPTION}.` }),
|
|
36
|
-
rationale: Type.String({
|
|
36
|
+
rationale: Type.String({
|
|
37
|
+
description: "Why: the durable reasoning a teammate would want six months later, plus the constraints and " +
|
|
38
|
+
"specifics that do not fit the one- or two-sentence decision. This is indexed for retrieval " +
|
|
39
|
+
"alongside the decision, so nothing is lost by putting detail here.",
|
|
40
|
+
}),
|
|
37
41
|
repo: Type.Optional(Type.String()),
|
|
38
42
|
workItemId: Type.Optional(Type.String()),
|
|
39
43
|
});
|
package/dist/upgrade.js
CHANGED
|
@@ -271,7 +271,13 @@ function failureHint(method) {
|
|
|
271
271
|
return `Try \`brew update\` and \`brew reinstall ${BREW_FORMULA}\`, or \`brew doctor\` if that fails too.`;
|
|
272
272
|
}
|
|
273
273
|
// Never suggest sudo: on managed machines the fix is a user-writable
|
|
274
|
-
// prefix, which the installer sets up automatically.
|
|
274
|
+
// prefix, which the installer sets up automatically. Windows has no `sh`,
|
|
275
|
+
// so it gets the PowerShell installer instead of a command that fails with
|
|
276
|
+
// "'sh' is not recognized".
|
|
277
|
+
if (process.platform === "win32") {
|
|
278
|
+
return ("If it was a permissions error, close any running yagni sessions and re-run the installer " +
|
|
279
|
+
"in PowerShell: irm https://yagni.app/install.ps1 | iex");
|
|
280
|
+
}
|
|
275
281
|
return ("If it was a permissions error, the installer repairs the global prefix without sudo: " +
|
|
276
282
|
"curl -fsSL https://yagni.app/install.sh | sh");
|
|
277
283
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yagni-app/code-staging",
|
|
3
|
-
"version": "1.1.4-staging.
|
|
3
|
+
"version": "1.1.4-staging.1425.1",
|
|
4
4
|
"description": "YAGNI Code: a terminal coding agent that already knows your company. One YAGNI login routes the model and grounds the agent in your team's context.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "YAGNI, Inc. <jack@yagni.app> (https://yagni.app)",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"turndown": "^7.2.4",
|
|
59
59
|
"typebox": "^1.3.15"
|
|
60
60
|
},
|
|
61
|
-
"yagniSourceSha": "
|
|
61
|
+
"yagniSourceSha": "e0166fd5a8fd711d788e98ec1d179c7d05100a78"
|
|
62
62
|
}
|