takomi 2.1.27 → 2.1.28
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/.pi/README.md +10 -0
- package/.pi/extensions/takomi-context-manager/diagnostics.ts +1 -1
- package/.pi/extensions/takomi-context-manager/extension-conflicts.ts +14 -3
- package/.pi/extensions/takomi-runtime/context-panel.ts +583 -282
- package/.pi/extensions/takomi-runtime/index.ts +38 -1
- package/.pi/extensions/takomi-runtime/takomi-stats.js +44 -16
- package/README.md +34 -4
- package/package.json +4 -2
- package/src/cli.js +326 -33
- package/src/harness.js +132 -16
- package/src/pi-harness.js +27 -6
- package/src/pi-optional-features.js +195 -0
- package/src/postinstall.js +27 -0
- package/src/skills-catalog.js +245 -0
- package/src/skills-installer.js +244 -101
- package/src/skills-selection-tui.js +200 -0
- package/src/store.js +418 -240
- package/src/takomi-stats.js +44 -16
package/.pi/README.md
CHANGED
|
@@ -45,6 +45,7 @@ Inside Pi, use:
|
|
|
45
45
|
- The old standalone commands (`/takomi-genesis`, `/takomi-design`, `/takomi-build`, `/takomi-kickoff`, `/autoorch`, `/orch`, `/architect`, `/code`, `/review`, and the `/takomi-subagent*` variants) are folded into `/takomi` subcommands so slash autocomplete stays small.
|
|
46
46
|
- prompt shortcuts are suffixed with `-prompt` to avoid collisions with runtime commands, e.g. `/orch-prompt`, `/build-prompt`, `/design-prompt`, `/genesis-prompt`, `/takomi-prompt`, `/prime-prompt`
|
|
47
47
|
- a project-local theme is available at `.pi/themes/takomi-noir.json`; select `takomi-noir` in `/settings` to use the Takomi UI palette
|
|
48
|
+
- optional Pi feature packs are managed by `takomi setup pi` or `takomi setup pi-features` and refreshed by `takomi refresh`; current defaults install Takomi Interview (`npm:@juicesharp/rpiv-ask-user-question`) while Takomi Todo (`npm:@juicesharp/rpiv-todo`), Browser QA (`npm:pi-chrome`), and Doc Preview (`npm:pi-markdown-preview`) stay opt-in
|
|
48
49
|
- additional workflow prompts are available as direct slash commands:
|
|
49
50
|
- `/vibe-primeAgent`
|
|
50
51
|
- `/vibe-spawnTask`
|
|
@@ -128,3 +129,12 @@ So when working on packaging, agents should distinguish between:
|
|
|
128
129
|
- rewrite JSON machine state
|
|
129
130
|
- keep task docs organized in `pending/`, `in-progress/`, `completed/`, and `blocked/`
|
|
130
131
|
- `takomi_board` intentionally cannot dispatch or redispatch agents. Use `takomi_subagent` for single, parallel, or chain execution, then call `takomi_board update_task` with the result.
|
|
132
|
+
|
|
133
|
+
## Attribution Notes
|
|
134
|
+
|
|
135
|
+
- Pi-native Takomi runs on [Pi](https://github.com/earendil-works/pi) / `@earendil-works/pi-coding-agent`, authored by Mario Zechner and Earendil Works.
|
|
136
|
+
- Takomi subagent execution builds on [`pi-subagents`](https://github.com/nicobailon/pi-subagents) by Nico Bailon, with Takomi adding lifecycle orchestration, board/state artifacts, model-routing policy, and review-loop conventions.
|
|
137
|
+
- Optional Takomi Interview and Todo feature packs integrate [`@juicesharp/rpiv-ask-user-question`](https://github.com/juicesharp/rpiv-mono/tree/main/packages/rpiv-ask-user-question) and [`@juicesharp/rpiv-todo`](https://github.com/juicesharp/rpiv-mono/tree/main/packages/rpiv-todo) by juicesharp.
|
|
138
|
+
- Optional Browser QA can use [`pi-chrome`](https://github.com/tianrendong/pi-chrome) by tianrendong.
|
|
139
|
+
- Optional Doc Preview can use [`pi-markdown-preview`](https://github.com/omaclaren/pi-markdown-preview) by omaclaren.
|
|
140
|
+
- [`context-mode`](https://github.com/mksglu/context-mode) by Mert Koseoğlu is credited as external research/power-user context tooling; it is not a Takomi default bundle.
|
|
@@ -41,7 +41,7 @@ export function renderReport(state: ContextManagerState, verbose = false): strin
|
|
|
41
41
|
lines.push("- Candidates: none");
|
|
42
42
|
}
|
|
43
43
|
if (report.duplicateExtensionWarnings.length > 0 || verbose) {
|
|
44
|
-
lines.push("", "Extension Conflict Diagnostics:", ...renderDuplicateExtensionGuidance(report.duplicateExtensionWarnings));
|
|
44
|
+
lines.push("", "Extension Conflict Diagnostics:", ...renderDuplicateExtensionGuidance(report.duplicateExtensionWarnings, report.cwd));
|
|
45
45
|
}
|
|
46
46
|
if (verbose) {
|
|
47
47
|
lines.push("", "Skill Index:", ...sortedSkills(state.skills).map((skill) => `- ${skill.name}`));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { access } from "node:fs/promises";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
2
3
|
import os from "node:os";
|
|
3
4
|
import path from "node:path";
|
|
4
|
-
import type { ContextManagerState } from "./state";
|
|
5
5
|
|
|
6
6
|
type KnownTakomiExtension = {
|
|
7
7
|
toolName: string;
|
|
@@ -43,9 +43,20 @@ export async function detectDuplicateTakomiExtensions(cwd: string): Promise<Arra
|
|
|
43
43
|
return warnings;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
function isTakomiSourceRepo(cwd: string): boolean {
|
|
47
|
+
return [
|
|
48
|
+
path.join(cwd, "package.json"),
|
|
49
|
+
path.join(cwd, "scripts", "pi-dev.ps1"),
|
|
50
|
+
path.join(cwd, ".pi", "extensions", "takomi-runtime", "index.ts"),
|
|
51
|
+
].every((filePath) => existsSync(filePath));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function renderDuplicateExtensionGuidance(warnings: Array<{ toolName: string; paths: string[] }>, cwd?: string): string[] {
|
|
47
55
|
if (warnings.length === 0) return ["- Duplicate Takomi extensions: none detected"];
|
|
48
|
-
const
|
|
56
|
+
const sourceRepo = cwd ? isTakomiSourceRepo(cwd) : false;
|
|
57
|
+
const lines = [sourceRepo
|
|
58
|
+
? "- Duplicate Takomi extensions detected (expected when running normal Pi inside the Takomi source repo):"
|
|
59
|
+
: "- Duplicate Takomi extensions detected:"];
|
|
49
60
|
for (const warning of warnings) {
|
|
50
61
|
lines.push(` - ${warning.toolName}`);
|
|
51
62
|
for (const filePath of warning.paths) lines.push(` - ${filePath}`);
|