takomi 2.1.8 → 2.1.10

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 CHANGED
@@ -8,6 +8,7 @@ It is intentionally separate from the existing cross-harness assets under `asset
8
8
 
9
9
  - `extensions/takomi-runtime/` - Pi runtime glue, embedded workflow playbooks, and orchestrator board tools
10
10
  - `extensions/takomi-subagents/` - Takomi-facing subagent wrapper over Pi-style execution semantics with resumable conversation IDs
11
+ - `extensions/takomi-context-manager/` - Progressive context loading, skill manifests, policy packs, model-routing gates, and context diagnostics
11
12
  - `prompts/` - Pi-native prompt shortcuts
12
13
  - `agents/` - Pi-native specialist agent definitions, including a design-stage agent
13
14
 
@@ -39,6 +40,7 @@ Inside Pi, use:
39
40
  - `/takomi subagents status|expand|collapse|fullscreen|next|prev|toggle` to inspect or reshape the active subagent stack
40
41
  - `/takomi-status` to show lifecycle, gate, session, and active subagent state
41
42
  - `/takomi-reset` to reset session-local Takomi runtime state
43
+ - `/context-report` to inspect prompt compaction, skill loading, policy gates, model routing corrections, and duplicate extension diagnostics
42
44
  - `takomi_board` actions now include stage expansion, task updates, multi-task dispatch, and redispatch support for review loops
43
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.
44
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`
@@ -67,6 +69,7 @@ Bundled with Takomi now:
67
69
 
68
70
  - `.pi/extensions/takomi-runtime/`
69
71
  - `.pi/extensions/takomi-subagents/`
72
+ - `.pi/extensions/takomi-context-manager/`
70
73
  - `.pi/prompts/`
71
74
  - `.pi/agents/`
72
75
  - `.pi/themes/`
@@ -112,6 +115,11 @@ So when working on packaging, agents should distinguish between:
112
115
  - Active Takomi subagent work now streams through the native Pi-style result UI instead of Takomi's older below-editor stack.
113
116
  - Use Pi's native result expansion, `Alt+T`, or `/takomi subagents expand` to inspect detailed subagent output.
114
117
  - Takomi still tracks active runs internally for status, review continuity, and board synchronization, but it no longer opens a custom subagent fullscreen overlay.
118
+ - `takomi-context-manager` reduces prompt bloat by replacing the always-on skill description dump with a names-only Skill Index plus progressive `skill_manifest`/`skill_load` tools.
119
+ - `takomi-context-manager` treats `/takomi routing` as the source of truth for model-routing policy via `.pi/settings.json -> takomi.modelRoutingPolicyFile`.
120
+ - `takomi-context-manager` gates `takomi_subagent` when model-routing context has not been loaded, provides the routing policy, and tells the agent to retry.
121
+ - `takomi-context-manager` can correct safe wrong-provider model requests, block or pause on policy violations, and ask the user whether to retry with an approved model or stop.
122
+ - `takomi-context-manager` detects known duplicate global/project Takomi extension paths in `context_report` to help diagnose tool registration conflicts.
115
123
  - `takomi_board` can:
116
124
  - create a Genesis-first lifecycle session by default
117
125
  - expand a lifecycle stage into additional tasks
package/README.md CHANGED
@@ -45,6 +45,16 @@ takomi init
45
45
 
46
46
  Takomi's Pi-native subagent execution and terminal UI build on **[`pi-subagents`](https://github.com/nicobailon/pi-subagents)** by **Nico Bailon**. That package provides the underlying Pi extension for delegated subagent runs, including the native subagent result renderer, live progress/status display, single/parallel/chain execution support, session/artifact handling, and related subagent tooling. Takomi adds its own lifecycle orchestration, model-routing policy, workflow metadata, board/checklist context, and agent conventions on top of that foundation.
47
47
 
48
+ ### Context Manager
49
+
50
+ Takomi now ships a Pi-native `takomi-context-manager` extension. It reduces prompt bloat with progressive context loading:
51
+
52
+ - skill names are always visible, while descriptions and full `SKILL.md` files load only when needed
53
+ - `skill_manifest`, `skill_load`, `policy_manifest`, `policy_load`, and `context_report` tools expose context on demand
54
+ - `/takomi routing` remains the source of truth for model-routing policy
55
+ - `takomi_subagent` is guarded by routing-policy context and can recover from wrong-provider model choices
56
+ - `/context-report` shows prompt compaction, loaded skills/policies, blocked actions, model-routing corrections, and duplicate extension diagnostics
57
+
48
58
 
49
59
  ### Option A: Global Install (Best for Multi-IDE Users) ⭐
50
60
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "takomi",
3
- "version": "2.1.8",
3
+ "version": "2.1.10",
4
4
  "description": "šŸŽÆ Stop wrestling with AI. Start building with purpose. The artisan's toolkit for agent workflows, Codex skills, and original Takomi capabilities like 21st.dev integration.",
5
5
  "type": "module",
6
6
  "bin": {
package/src/doctor.js CHANGED
@@ -23,9 +23,11 @@ export async function runDoctor({ version, cwd = process.cwd() } = {}) {
23
23
  console.log(status(report.bundled.packageReady, 'Bundled .pi assets', report.bundled.targets.root));
24
24
  console.log(status(report.bundled.checks.runtime, 'Bundled takomi-runtime', report.bundled.targets.runtime));
25
25
  console.log(status(report.bundled.checks.subagents, 'Bundled takomi-subagents', report.bundled.targets.subagents));
26
+ console.log(status(report.bundled.checks.contextManager, 'Bundled takomi-context-manager', report.bundled.targets.contextManager));
26
27
  console.log(status(report.bundled.packageIncluded, 'Package includes .pi assets', report.bundled.packageIncluded ? 'yes' : 'no'));
27
28
  console.log(status(report.installed.runtimeInstalled, 'Installed takomi-runtime', report.installed.targets.extensions));
28
29
  console.log(status(report.installed.subagentsInstalled, 'Installed takomi-subagents', report.installed.targets.extensions));
30
+ console.log(status(report.installed.contextManagerInstalled, 'Installed takomi-context-manager', report.installed.targets.extensions));
29
31
  console.log(status(await fs.pathExists(`${report.installed.targets.extensions}/oauth-router`), 'Installed oauth-router', `${report.installed.targets.extensions}`));
30
32
  console.log(status(report.installed.coreInstalled, 'Installed Takomi core', path.join(path.dirname(report.installed.targets.root), 'src', 'pi-takomi-core')));
31
33
  console.log(status(report.installed.piSubagentsModuleInstalled, 'Installed pi-subagents module', path.join(report.installed.targets.root, 'node_modules', 'pi-subagents')));
@@ -54,7 +56,7 @@ export async function runDoctor({ version, cwd = process.cwd() } = {}) {
54
56
  console.log(pc.white(' - Package .pi assets before enabling takomi install pi in releases.'));
55
57
  }
56
58
 
57
- if (!report.installed.runtimeInstalled || !report.installed.subagentsInstalled || !report.installed.coreInstalled || !report.installed.piSubagentsModuleInstalled) {
59
+ if (!report.installed.runtimeInstalled || !report.installed.subagentsInstalled || !report.installed.contextManagerInstalled || !report.installed.coreInstalled || !report.installed.piSubagentsModuleInstalled) {
58
60
  console.log(pc.white(' - Run takomi install pi to refresh the Pi harness, Takomi core, and pi-subagents runtime module.'));
59
61
  }
60
62
 
package/src/pi-harness.js CHANGED
@@ -72,6 +72,7 @@ export function getBundledPiAssetTargets() {
72
72
  root,
73
73
  runtime: path.join(root, 'extensions', 'takomi-runtime'),
74
74
  subagents: path.join(root, 'extensions', 'takomi-subagents'),
75
+ contextManager: path.join(root, 'extensions', 'takomi-context-manager'),
75
76
  prompts: path.join(root, 'prompts'),
76
77
  agents: path.join(root, 'agents'),
77
78
  themes: path.join(root, 'themes'),
@@ -162,6 +163,7 @@ export async function inspectBundledPiAssets() {
162
163
  root: await fs.pathExists(targets.root),
163
164
  runtime: await fs.pathExists(targets.runtime),
164
165
  subagents: await fs.pathExists(targets.subagents),
166
+ contextManager: await fs.pathExists(targets.contextManager),
165
167
  prompts: await fs.pathExists(targets.prompts),
166
168
  agents: await fs.pathExists(targets.agents),
167
169
  themes: await fs.pathExists(targets.themes),
@@ -186,6 +188,7 @@ export async function inspectInstalledTakomiPiHarness(home = HOME) {
186
188
  const targets = getPiGlobalTargets(home);
187
189
  const runtime = path.join(targets.extensions, 'takomi-runtime');
188
190
  const subagents = path.join(targets.extensions, 'takomi-subagents');
191
+ const contextManager = path.join(targets.extensions, 'takomi-context-manager');
189
192
  const core = path.join(path.dirname(targets.root), 'src', 'pi-takomi-core');
190
193
  const piSubagentsModule = path.join(targets.root, 'node_modules', 'pi-subagents');
191
194
 
@@ -193,6 +196,7 @@ export async function inspectInstalledTakomiPiHarness(home = HOME) {
193
196
  targets,
194
197
  runtimeInstalled: await fs.pathExists(runtime),
195
198
  subagentsInstalled: await fs.pathExists(subagents),
199
+ contextManagerInstalled: await fs.pathExists(contextManager),
196
200
  coreInstalled: await fs.pathExists(core),
197
201
  piSubagentsModuleInstalled: await fs.pathExists(piSubagentsModule),
198
202
  promptsInstalled: await fs.pathExists(targets.prompts),
@@ -104,11 +104,13 @@ export async function installPiHarnessAssets(version = 'unknown') {
104
104
  copied.readme = await copyOwnedFile(readmeSrc, path.join(targets.root, 'README.md'));
105
105
  }
106
106
 
107
- const extensionNames = ['takomi-runtime', 'takomi-subagents', 'oauth-router'];
108
- for (const name of extensionNames) {
109
- const src = path.join(srcRoot, 'extensions', name);
110
- if (await fs.pathExists(src)) {
111
- copied[`extension:${name}`] = await copyOwnedDirectory(src, path.join(targets.extensions, name));
107
+ const extensionsRoot = path.join(srcRoot, 'extensions');
108
+ if (await fs.pathExists(extensionsRoot)) {
109
+ const extensionEntries = await fs.readdir(extensionsRoot, { withFileTypes: true });
110
+ for (const entry of extensionEntries) {
111
+ if (!entry.isDirectory()) continue;
112
+ const src = path.join(extensionsRoot, entry.name);
113
+ copied[`extension:${entry.name}`] = await copyOwnedDirectory(src, path.join(targets.extensions, entry.name));
112
114
  }
113
115
  }
114
116
 
@@ -168,6 +170,7 @@ export async function validatePiHarnessInstall() {
168
170
  return {
169
171
  runtime: await fs.pathExists(path.join(targets.extensions, 'takomi-runtime')),
170
172
  subagents: await fs.pathExists(path.join(targets.extensions, 'takomi-subagents')),
173
+ contextManager: await fs.pathExists(path.join(targets.extensions, 'takomi-context-manager')),
171
174
  oauthRouter: await fs.pathExists(path.join(targets.extensions, 'oauth-router')),
172
175
  prompts: await fs.pathExists(targets.prompts),
173
176
  agents: await fs.pathExists(targets.agents),
@@ -183,7 +186,7 @@ export function printPiInstallSummary(result, validation) {
183
186
  console.log(pc.green('\nāœ” Installed Takomi Pi harness assets'));
184
187
  console.log(pc.white(` Root: ${result.targets.root}`));
185
188
  console.log(pc.white(` Manifest: ${PI_MANIFEST_PATH}`));
186
- console.log(pc.white(` Extensions: ${validation.runtime && validation.subagents && validation.oauthRouter ? 'ok' : 'check needed'}`));
189
+ console.log(pc.white(` Extensions: ${validation.runtime && validation.subagents && validation.contextManager && validation.oauthRouter ? 'ok' : 'check needed'}`));
187
190
  console.log(pc.white(` Prompts: ${validation.prompts ? 'ok' : 'missing'}`));
188
191
  console.log(pc.white(` Agents: ${validation.agents ? 'ok' : 'missing'}`));
189
192
  console.log(pc.white(` Themes: ${validation.themes ? 'ok' : 'missing'}`));