pi-soly 2.2.0 → 2.2.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.
- package/README.md +1 -1
- package/built-in-rules/release-discipline.md +105 -0
- package/commands/_helpers.ts +87 -0
- package/commands/artifacts.ts +86 -0
- package/commands/docs.ts +74 -0
- package/commands/rules.ts +187 -0
- package/commands/rulewizard.ts +43 -0
- package/commands/soly.ts +560 -0
- package/commands/why.ts +106 -0
- package/commands.ts +36 -1231
- package/core.ts +2 -15
- package/index.ts +0 -13
- package/init.ts +2 -2
- package/package.json +2 -1
- package/skills/soly-framework/SKILL.md +1 -1
package/core.ts
CHANGED
|
@@ -1526,27 +1526,14 @@ export function buildStatusLine(
|
|
|
1526
1526
|
// Soly dir helper
|
|
1527
1527
|
// ============================================================================
|
|
1528
1528
|
|
|
1529
|
-
/**
|
|
1529
|
+
/** The only soly project dir name. Vendor-neutral. */
|
|
1530
1530
|
export const SOLY_DIRNAME = ".agents";
|
|
1531
1531
|
|
|
1532
|
-
/**
|
|
1533
|
-
* Used to warn users with an old `.soly/` project to rename it to `.agents/`. */
|
|
1534
|
-
export const LEGACY_SOLY_DIRNAME = ".soly";
|
|
1535
|
-
|
|
1536
|
-
/** The soly project dir for a given cwd. Always `<cwd>/.agents/` — the legacy
|
|
1537
|
-
* `.soly/` location is no longer read (rename it; `isLegacySolyDir` warns). */
|
|
1532
|
+
/** The soly project dir for a given cwd. Always `<cwd>/.agents/`. */
|
|
1538
1533
|
export function solyDirFor(cwd: string): string {
|
|
1539
1534
|
return path.join(cwd, SOLY_DIRNAME);
|
|
1540
1535
|
}
|
|
1541
1536
|
|
|
1542
|
-
/** True if a legacy `.soly/` dir exists but `.agents/` doesn't — i.e. the
|
|
1543
|
-
* project predates the rename and is now invisible to soly. Warn the user. */
|
|
1544
|
-
export function isLegacySolyDir(cwd: string): boolean {
|
|
1545
|
-
const newPath = path.join(cwd, SOLY_DIRNAME);
|
|
1546
|
-
const oldPath = path.join(cwd, LEGACY_SOLY_DIRNAME);
|
|
1547
|
-
return !fs.existsSync(newPath) && fs.existsSync(oldPath);
|
|
1548
|
-
}
|
|
1549
|
-
|
|
1550
1537
|
// ============================================================================
|
|
1551
1538
|
// buildNextHint — "what should the user run next?" footer hint
|
|
1552
1539
|
// ============================================================================
|
package/index.ts
CHANGED
|
@@ -43,7 +43,6 @@ import {
|
|
|
43
43
|
STATUS_ID,
|
|
44
44
|
solyDirFor,
|
|
45
45
|
SOLY_DIRNAME,
|
|
46
|
-
isLegacySolyDir,
|
|
47
46
|
buildNextHint,
|
|
48
47
|
buildDriftReminder,
|
|
49
48
|
type RuleFile,
|
|
@@ -436,18 +435,6 @@ export default function solyExtension(pi: ExtensionAPI) {
|
|
|
436
435
|
// ============================================================================
|
|
437
436
|
|
|
438
437
|
pi.on("session_start", async (event, ctx) => {
|
|
439
|
-
// Legacy detection: a project with only a `.soly/` dir (no `.agents/`)
|
|
440
|
-
// is now invisible to soly — warn the user to rename it. soly no longer
|
|
441
|
-
// reads `.soly/`. One-time per session.
|
|
442
|
-
if (isLegacySolyDir(ctx.cwd)) {
|
|
443
|
-
notifyDeprecation(
|
|
444
|
-
ctx.ui,
|
|
445
|
-
`.soly/ (legacy, no longer read)`,
|
|
446
|
-
`.agents/`,
|
|
447
|
-
`Run \`mv .soly .agents\` — soly now reads only \`.agents/\`.`,
|
|
448
|
-
);
|
|
449
|
-
}
|
|
450
|
-
|
|
451
438
|
// Rules sources (priority order, higher wins on relPath collision).
|
|
452
439
|
// Project rules always beat global rules. `.agents/rules.local/` is
|
|
453
440
|
// gitignored — for personal overrides on top of the project's rules.
|
package/init.ts
CHANGED
|
@@ -206,9 +206,9 @@ export async function initSolyProject(
|
|
|
206
206
|
const agentsDir = path.join(cwd, SOLY_DIRNAME);
|
|
207
207
|
|
|
208
208
|
// Preconditions
|
|
209
|
-
if (fs.existsSync(agentsDir)
|
|
209
|
+
if (fs.existsSync(agentsDir)) {
|
|
210
210
|
ui.notify(
|
|
211
|
-
`soly init: project already initialized (found ${SOLY_DIRNAME}/
|
|
211
|
+
`soly init: project already initialized (found ${SOLY_DIRNAME}/). ` +
|
|
212
212
|
`Aborting to avoid overwriting.`,
|
|
213
213
|
"error",
|
|
214
214
|
);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-soly",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.2",
|
|
4
4
|
"description": "Project management + workflow framework for pi-coding-agent. Plans, state, MANDATORY rules, self-review, multi-question picker, native footer + welcome chrome — one npm install, zero config. The LLM drives the workflow inline via the soly_workflow tool — no external subagent plugin.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.ts",
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"files": [
|
|
31
31
|
"README.md",
|
|
32
32
|
"commands.ts",
|
|
33
|
+
"commands",
|
|
33
34
|
"config.ts",
|
|
34
35
|
"context-manager.ts",
|
|
35
36
|
"core.ts",
|
|
@@ -106,7 +106,7 @@ stateful self-review loop you start by typing `soly verify` (it's not a
|
|
|
106
106
|
│ └── .continue-here.md # pause resume marker
|
|
107
107
|
```
|
|
108
108
|
|
|
109
|
-
**One home:** everything lives under `.agents/` — soly's workflow artifacts (PLAN.md, SUMMARY.md, phases, STATE), project rules/docs, and the vendor-neutral config (skills, agents) other AI tools also read. Global rules/config live under `~/.agents/`. `AGENTS.md` at the project root carries top-level agent conventions.
|
|
109
|
+
**One home:** everything lives under `.agents/` — soly's workflow artifacts (PLAN.md, SUMMARY.md, phases, STATE), project rules/docs, and the vendor-neutral config (skills, agents) other AI tools also read. Global rules/config live under `~/.agents/`. `AGENTS.md` at the project root carries top-level agent conventions.
|
|
110
110
|
|
|
111
111
|
## Frontmatter conventions
|
|
112
112
|
|