ytdb-slate 0.1.0 → 0.1.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,7 +23,7 @@ Optional config file: `slate.json` in the project's pi config dir (`.pi/slate.js
23
23
  | `orchestratorModeDefault` | boolean | `false` | Start fresh interactive sessions with orchestrator mode ON. |
24
24
  | `episodeModel` | string | newest available Anthropic Sonnet, else the worker's own model | Model (`provider/id`) used to compress a finished action into an episode. |
25
25
  | `workerTools` | string[] | `["read", "bash", "edit", "write", "grep", "find", "ls"]` | Tools available to worker threads (an empty list also falls back to the default). |
26
- | `maxConcurrent` | number | `4` | Maximum number of worker actions running concurrently. |
26
+ | `maxConcurrent` | number | `4` | Maximum number of worker actions running concurrently (must be ≥ 1 — unenforced: a value of 0 or less silently hangs all dispatches). Excess dispatches wait in a queue; actions on the same thread always run in dispatch order. Default rationale: shipped `docs/design-principles.md` §5 (repo-local note). |
27
27
  | `pauseThresholdPercent` | number | `40` | Orchestrator context budget (percent, in `(0, 100]`) at which Slate auto-pauses and prepares a fresh-session handoff. |
28
28
  | `orchestratorPromptDocs` | string[] | `[]` | Project markdown files (paths relative to the project root) whose **contents** are appended to the orchestrator system prompt. |
29
29
  | `workerPromptDocs` | string[] | `[]` | Project markdown files whose **contents** are appended to every worker-thread system prompt. |
@@ -151,6 +151,19 @@ or two problems for the others:
151
151
  | P9 parallelism | `threads.ts` `maxConcurrent` queueing; doctrine rule 2 in `mode.ts` |
152
152
  | P10 context as RAM | `handoff.ts` context-budget auto-pause + fresh-session handoff |
153
153
 
154
+ Repo-local note (not from the report): the `maxConcurrent` cap defaults
155
+ to 4. Its failure modes are asymmetric: excess dispatches wait for a
156
+ slot (actions on the same thread additionally serialize in dispatch
157
+ order), so a low cap costs only latency, while a cap above the
158
+ provider's effective rate limits turns rate-limit exhaustion into
159
+ FAILED episodes and raises the unattended cost burn rate. Over its
160
+ lifetime a slot covers a multi-turn worker conversation followed by its
161
+ episode-compression call. The default is sized to cover typical
162
+ parallel batches (recon fan-outs, a review wave of a few perspectives)
163
+ while staying safe on common consumer API tiers; wider fan-outs only
164
+ pay tail latency, and projects with higher-tier keys raise the cap in
165
+ `slate.json`.
166
+
154
167
  ## 6. Runtime knowledge: what the orchestrator knows, and when
155
168
 
156
169
  The orchestrator's knowledge of these principles is two-tier, following
@@ -45,7 +45,7 @@ export interface SlateSnapshot {
45
45
  export interface SlateConfig {
46
46
  episodeModel?: string; // "provider/id" for the episode compressor (D5)
47
47
  workerTools?: string[];
48
- maxConcurrent?: number;
48
+ maxConcurrent?: number; // global cap on concurrently running worker actions (default 4; must be ≥ 1 — unenforced, ≤ 0 silently hangs all dispatches; rationale: docs/design-principles.md §5 repo-local note)
49
49
  pauseThresholdPercent?: number; // orchestrator context budget for auto-pause (default 40)
50
50
  orchestratorModeDefault?: boolean; // seed orchestrator mode ON for fresh interactive sessions (unsaved until first real mutation)
51
51
  orchestratorPromptDocs?: string[]; // role-guideline docs appended to the orchestrator prompt (cwd-relative paths, default none)
@@ -83,7 +83,7 @@ export class ThreadManager {
83
83
  private store: SlateStore,
84
84
  private config: SlateConfig,
85
85
  ) {
86
- this.semaphore = new Semaphore(config.maxConcurrent ?? 4);
86
+ this.semaphore = new Semaphore(config.maxConcurrent ?? 4); // default rationale: docs/design-principles.md §5 repo-local note
87
87
  }
88
88
 
89
89
  getConfig(): SlateConfig {
@@ -14,12 +14,10 @@
14
14
  import { mkdirSync } from "node:fs";
15
15
  import { resolve } from "node:path";
16
16
  import {
17
- AuthStorage,
18
17
  CONFIG_DIR_NAME,
19
18
  createAgentSession,
20
19
  DefaultResourceLoader,
21
20
  getAgentDir,
22
- ModelRegistry,
23
21
  SessionManager,
24
22
  SettingsManager,
25
23
  type ExtensionContext,
@@ -66,8 +64,6 @@ export async function openWorkerSession(opts: {
66
64
  mkdirSync(dir, { recursive: true });
67
65
 
68
66
  const agentDir = getAgentDir();
69
- const authStorage = AuthStorage.create();
70
- const modelRegistry = ModelRegistry.create(authStorage);
71
67
 
72
68
  // Trust propagation (mirrors vanilla pi's runtime SettingsManager): when no
73
69
  // settingsManager is passed, the SDK default-constructs one with
@@ -104,11 +100,16 @@ export async function openWorkerSession(opts: {
104
100
  ? SessionManager.open(opts.sessionFile)
105
101
  : SessionManager.create(ctx.cwd, dir);
106
102
 
103
+ // No modelRuntime passed: createAgentSession (pi >= 0.80.8) defaults to a
104
+ // ModelRuntime replacing the AuthStorage + ModelRegistry setup this code
105
+ // hand-built before those SDK options were removed. Credential/config
106
+ // sources are unchanged — global agentDir auth.json + models.json, never
107
+ // project-local — but the default is a superset: it also reads/writes
108
+ // agentDir/models-store.json and may run a throttled (~4h-cached)
109
+ // create-time network catalog refresh (disabled by PI_OFFLINE).
107
110
  const { session } = await createAgentSession({
108
111
  cwd: ctx.cwd,
109
112
  agentDir,
110
- authStorage,
111
- modelRegistry,
112
113
  model: model ?? undefined,
113
114
  tools: opts.tools && opts.tools.length > 0 ? opts.tools : DEFAULT_WORKER_TOOLS,
114
115
  resourceLoader: loader,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ytdb-slate",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Slate: a thread-weaving orchestration extension for the pi coding agent — bounded worker actions, compressed episodes, mandatory research/design/adversarial/track review workflow, optional draft-PR publishing.",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [