@stoneforge/smithy 1.8.0 → 1.9.0

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.
@@ -162,13 +162,13 @@ When creating tasks, instruct workers to update the Documentation Directory if t
162
162
 
163
163
  ### Documentation Library
164
164
 
165
- All workspace documentation belongs to the **Documentation** library (`el-2rig`). After creating any document, always add it to this library:
165
+ All workspace documentation belongs to the **Documentation** library. Use `sf docs init` to bootstrap the Documentation library infrastructure (idempotent — safe to run anytime). After creating any document, add it to the library:
166
166
 
167
167
  ```bash
168
- sf library add el-2rig <new-doc-id>
168
+ sf docs add <new-doc-id>
169
169
  ```
170
170
 
171
- When instructing workers to create documents, include the library add step in task descriptions.
171
+ When instructing workers to create documents, include the `sf docs add` step in task descriptions.
172
172
 
173
173
  ### Before Planning
174
174
 
@@ -197,7 +197,7 @@ ALWAYS include a documentation instruction in every task description. Workers mu
197
197
  - Create new documents when they discover undocumented knowledge
198
198
  - Fix outdated or incorrect documentation they encounter
199
199
  - Update the Documentation Directory when creating or modifying documents
200
- - Add the document to the Documentation library (`sf library add el-2rig <doc-id>`)
200
+ - Add the document to the Documentation library (`sf docs add <doc-id>`)
201
201
  - Use the correct `--category` when creating documents
202
202
 
203
203
  ### Foundational Documents
@@ -206,11 +206,11 @@ When setting up a new project or major feature area, create foundational documen
206
206
 
207
207
  ```bash
208
208
  sf document create --title "System Architecture" --content "..." --category spec --type markdown
209
- sf library add el-2rig <doc-id> # Add to Documentation library
209
+ sf docs add <doc-id> # Add to Documentation library
210
210
  sf document create --title "Decision Log" --content "..." --category decision-log --type markdown
211
- sf library add el-2rig <doc-id> # Add to Documentation library
211
+ sf docs add <doc-id> # Add to Documentation library
212
212
  sf document create --title "API Reference" --content "..." --category reference --type markdown
213
- sf library add el-2rig <doc-id> # Add to Documentation library
213
+ sf docs add <doc-id> # Add to Documentation library
214
214
  ```
215
215
 
216
216
  ### Document Categories
@@ -181,7 +181,7 @@ Keep documentation accurate and complete as you work:
181
181
  - **Create** new documents when you discover undocumented knowledge worth preserving (architecture patterns, gotchas, setup steps).
182
182
  - **Fix** outdated or incorrect documentation you encounter, even if it's not directly related to your task — accurate docs benefit all agents.
183
183
  - **Update the Documentation Directory** (`sf document search "documentation directory"`) when you create or significantly modify documents.
184
- - **Add to the Documentation library** (`sf library add el-2rig <doc-id>`) so the document is discoverable via library browsing.
184
+ - **Add to the Documentation library** (`sf docs add <doc-id>`) so the document is discoverable via library browsing.
185
185
  - Use the correct `--category` when creating: `spec`, `prd`, `decision-log`, `reference`, `how-to`, `explanation`, `runbook`, `changelog`, `post-mortem`. Use `other` only when no existing category fits, and set `--metadata '{"customCategory": "name"}'` to track the intended category.
186
186
 
187
187
  ```bash
@@ -190,7 +190,7 @@ sf document update <doc-id> --file updated-content.md
190
190
 
191
191
  # Create a new document and add to library
192
192
  sf document create --title "Auth Architecture" --content "..." --category reference --type markdown
193
- sf library add el-2rig <new-doc-id>
193
+ sf docs add <new-doc-id>
194
194
 
195
195
  # Search for the Documentation Directory to update it
196
196
  sf document search "documentation directory"
@@ -228,7 +228,7 @@ sf document search "query" --category spec --limit 10
228
228
  # Documentation — create & update
229
229
  sf document create --title "Doc Title" --content "..." --category reference --type markdown
230
230
  sf document update <doc-id> --content "..."
231
- sf library add el-2rig <doc-id> # Add new doc to Documentation library
231
+ sf docs add <doc-id> # Add new doc to Documentation library
232
232
 
233
233
  # Merge completed work (squash-merge session branch into master)
234
234
  sf merge --message "descriptive commit message"
@@ -45,7 +45,7 @@ Use your judgment. If you can determine the correct fix by reading the code, fix
45
45
  - **If low/medium**: Fix in your worktree, commit with clear message describing the fix
46
46
  - **If high**: Collect for Director escalation
47
47
 
48
- 5. **Verify library membership**: Check that all documentation documents belong to the Documentation library (`el-2rig`). Add any missing ones with `sf library add el-2rig <doc-id>`.
48
+ 5. **Verify library membership**: Check that all documentation documents belong to the Documentation library. Run `sf docs init` to ensure the library exists, then add any missing documents with `sf docs add <doc-id>`.
49
49
 
50
50
  6. **If changes made**: `sf merge --cleanup --message "docs: automated documentation fixes"` to squash-merge and clean up
51
51
 
@@ -60,7 +60,7 @@ If the PR changes behavior that is likely documented (API endpoints, config opti
60
60
  sf document search "keyword from changed area"
61
61
  ```
62
62
 
63
- If relevant documents exist and were NOT updated in the PR, include documentation updates in your review feedback. If the worker's task is being handed off for changes, specify which documents need updating. Also check that the Documentation Directory was updated if new documents were created. Also verify that any new documents created by the worker were added to the Documentation library (`sf library add el-2rig <doc-id>`). If missing, include this in your review feedback.
63
+ If relevant documents exist and were NOT updated in the PR, include documentation updates in your review feedback. If the worker's task is being handed off for changes, specify which documents need updating. Also check that the Documentation Directory was updated if new documents were created. Also verify that any new documents created by the worker were added to the Documentation library (`sf docs add <doc-id>`). If missing, include this in your review feedback.
64
64
 
65
65
  ## No Commits to Merge
66
66
 
@@ -233,7 +233,7 @@ Keep documentation accurate and complete as you work:
233
233
  - **Create** new documents when you discover undocumented knowledge worth preserving (architecture patterns, gotchas, setup steps).
234
234
  - **Fix** outdated or incorrect documentation you encounter, even if it's not directly related to your task — accurate docs benefit all agents.
235
235
  - **Update the Documentation Directory** (`sf document search "documentation directory"`) when you create or significantly modify documents.
236
- - **Add to the Documentation library** (`sf library add el-2rig <doc-id>`) so the document is discoverable via library browsing.
236
+ - **Add to the Documentation library** (`sf docs add <doc-id>`) so the document is discoverable via library browsing.
237
237
  - Use the correct `--category` when creating: `spec`, `prd`, `decision-log`, `reference`, `how-to`, `explanation`, `runbook`, `changelog`, `post-mortem`. Use `other` only when no existing category fits, and set `--metadata '{"customCategory": "name"}'` to track the intended category.
238
238
 
239
239
  ```bash
@@ -242,7 +242,7 @@ sf document update <doc-id> --file updated-content.md
242
242
 
243
243
  # Create a new document and add to library
244
244
  sf document create --title "Auth Architecture" --content "..." --category reference --type markdown
245
- sf library add el-2rig <new-doc-id>
245
+ sf docs add <new-doc-id>
246
246
 
247
247
  # Search for the Documentation Directory to update it
248
248
  sf document search "documentation directory"
@@ -289,5 +289,5 @@ sf document search "query" --category spec --limit 10
289
289
  # Documentation — create & update
290
290
  sf document create --title "Doc Title" --content "..." --category reference --type markdown
291
291
  sf document update <doc-id> --content "..."
292
- sf library add el-2rig <doc-id> # Add new doc to Documentation library
292
+ sf docs add <doc-id> # Add new doc to Documentation library
293
293
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"dispatch-daemon.d.ts","sourceRoot":"","sources":["../../src/services/dispatch-daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dispatch-daemon.d.ts","sourceRoot":"","sources":["../../src/services/dispatch-daemon.ts"],"names":[],"mappings":"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"}
@@ -185,7 +185,9 @@ export class DispatchDaemonImpl {
185
185
  }
186
186
  getRateLimitStatus() {
187
187
  const fallbackChain = this.settingsService?.getAgentDefaults().fallbackChain ?? [];
188
- const isPaused = fallbackChain.length > 0 && this.rateLimitTracker.isAllLimited(fallbackChain);
188
+ const isPaused = fallbackChain.length > 0
189
+ ? this.rateLimitTracker.isAllLimited(fallbackChain)
190
+ : this.rateLimitTracker.isLimited('claude');
189
191
  const allLimits = this.rateLimitTracker.getAllLimits();
190
192
  const soonestReset = this.rateLimitTracker.getSoonestResetTime();
191
193
  return {
@@ -549,6 +551,11 @@ export class DispatchDaemonImpl {
549
551
  role: 'worker',
550
552
  workerMode: 'ephemeral',
551
553
  });
554
+ // Track recovery stewards assigned during this cycle to prevent cascade assignment.
555
+ // When a steward session terminates immediately (e.g. rate-limited), getActiveSession
556
+ // returns null and the steward appears available for the next task. This set ensures
557
+ // each steward is only assigned once per recoverOrphanedAssignments call.
558
+ const stewardsUsedThisCycle = new Set();
552
559
  for (const worker of workers) {
553
560
  const workerId = asEntityId(worker.id);
554
561
  // 2. Skip if worker has an active session
@@ -561,6 +568,14 @@ export class DispatchDaemonImpl {
561
568
  });
562
569
  if (workerTasks.length === 0)
563
570
  continue;
571
+ // 3b. Skip recovery entirely when all executables are rate-limited.
572
+ // Rate limits are transient — do NOT increment resumeCount, as that
573
+ // would eventually trigger the recovery steward for a non-stuck task.
574
+ const executableCheck = this.resolveExecutableWithFallback(worker);
575
+ if (executableCheck === 'all_limited') {
576
+ logger.debug(`All executables rate-limited, skipping orphan recovery for ${worker.name}`);
577
+ continue; // Skip this worker entirely — do NOT increment resumeCount
578
+ }
564
579
  // 4. Check if the task is stuck in a resume loop
565
580
  const taskAssignment = workerTasks[0];
566
581
  const resumeCount = taskAssignment.orchestratorMeta?.resumeCount ?? 0;
@@ -569,7 +584,7 @@ export class DispatchDaemonImpl {
569
584
  // Task has been resumed too many times without status change —
570
585
  // spawn a recovery steward instead of resuming the worker again
571
586
  try {
572
- await this.spawnRecoveryStewardForTask(worker, taskAssignment.task, taskAssignment.orchestratorMeta);
587
+ await this.spawnRecoveryStewardForTask(worker, taskAssignment.task, taskAssignment.orchestratorMeta, stewardsUsedThisCycle);
573
588
  processed++;
574
589
  logger.info(`[dispatch-daemon] Spawning recovery steward for stuck task ${taskAssignment.task.id} after ${resumeCount} resume attempts`);
575
590
  }
@@ -619,6 +634,13 @@ export class DispatchDaemonImpl {
619
634
  });
620
635
  if (stewardTasks.length === 0)
621
636
  continue;
637
+ // Skip recovery when all executables are rate-limited (same guard as Phase 1).
638
+ // Prevents stewardRecoveryCount from incrementing due to transient rate limits.
639
+ const stewardExecCheck = this.resolveExecutableWithFallback(steward);
640
+ if (stewardExecCheck === 'all_limited') {
641
+ logger.debug(`All executables rate-limited, skipping steward orphan recovery for ${steward.name}`);
642
+ continue;
643
+ }
622
644
  const orphanedAssignment = stewardTasks[0];
623
645
  // Safety valve: cap steward recovery attempts to prevent infinite re-dispatch loops
624
646
  const stewardRecoveryCount = orphanedAssignment.orchestratorMeta?.stewardRecoveryCount ?? 0;
@@ -997,8 +1019,13 @@ export class DispatchDaemonImpl {
997
1019
  try {
998
1020
  // Check if all executables in the fallback chain are rate-limited.
999
1021
  // When paused, skip dispatch-related polls but still run non-dispatch work.
1022
+ // When no fallback chain is configured, check if the default provider is limited —
1023
+ // an empty chain previously made allLimited always false, letting orphan recovery
1024
+ // run every cycle even when the only executable was rate-limited.
1000
1025
  const fallbackChain = this.settingsService?.getAgentDefaults().fallbackChain ?? [];
1001
- const allLimited = fallbackChain.length > 0 && this.rateLimitTracker.isAllLimited(fallbackChain);
1026
+ const allLimited = fallbackChain.length > 0
1027
+ ? this.rateLimitTracker.isAllLimited(fallbackChain)
1028
+ : this.rateLimitTracker.isLimited('claude');
1002
1029
  if (allLimited) {
1003
1030
  // Schedule a wake-up timer so we re-check when the soonest limit expires
1004
1031
  const soonestReset = this.rateLimitTracker.getSoonestResetTime();
@@ -1747,17 +1774,23 @@ export class DispatchDaemonImpl {
1747
1774
  * @param task - The stuck task
1748
1775
  * @param taskMeta - The task's orchestrator metadata
1749
1776
  */
1750
- async spawnRecoveryStewardForTask(worker, task, taskMeta) {
1777
+ async spawnRecoveryStewardForTask(worker, task, taskMeta, stewardsUsedThisCycle) {
1751
1778
  const workerId = asEntityId(worker.id);
1752
1779
  // 1. Find an available recovery steward
1753
1780
  const stewards = await this.agentRegistry.listAgents({
1754
1781
  role: 'steward',
1755
1782
  stewardFocus: 'recovery',
1756
1783
  });
1757
- // Find a steward without an active session
1784
+ // Find a steward without an active session that hasn't already been used this cycle.
1785
+ // The stewardsUsedThisCycle guard prevents cascade assignment: when a steward session
1786
+ // terminates immediately (e.g. due to rate limiting), getActiveSession returns null
1787
+ // and the steward appears available for the next task in the same loop iteration.
1758
1788
  let recoverySteward;
1759
1789
  for (const steward of stewards) {
1760
- const session = this.sessionManager.getActiveSession(asEntityId(steward.id));
1790
+ const sid = asEntityId(steward.id);
1791
+ if (stewardsUsedThisCycle?.has(sid))
1792
+ continue;
1793
+ const session = this.sessionManager.getActiveSession(sid);
1761
1794
  if (!session) {
1762
1795
  recoverySteward = steward;
1763
1796
  break;
@@ -1842,6 +1875,9 @@ export class DispatchDaemonImpl {
1842
1875
  interactive: false, // Stewards use headless mode
1843
1876
  executablePathOverride: recoveryExecutableOverride ?? undefined,
1844
1877
  });
1878
+ // 5b. Mark steward as used this cycle so it won't be re-assigned if the session
1879
+ // terminates immediately (e.g. rate-limited) before the next loop iteration checks.
1880
+ stewardsUsedThisCycle?.add(stewardId);
1845
1881
  // 6. Session started successfully — now transfer the task from worker to steward.
1846
1882
  // If the metadata update fails, terminate the steward session to avoid an
1847
1883
  // orphaned steward running without proper task assignment.