gsd-pi 2.35.0-dev.6179610 → 2.35.0-dev.67d0e02

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.
@@ -74,7 +74,6 @@ export function registerGSDCommand(pi) {
74
74
  { cmd: "triage", desc: "Manually trigger triage of pending captures" },
75
75
  { cmd: "dispatch", desc: "Dispatch a specific phase directly" },
76
76
  { cmd: "history", desc: "View execution history" },
77
- { cmd: "rate", desc: "Rate last unit's model tier (over/ok/under) — improves adaptive routing" },
78
77
  { cmd: "undo", desc: "Revert last completed unit" },
79
78
  { cmd: "skip", desc: "Prevent a unit from auto-mode dispatch" },
80
79
  { cmd: "export", desc: "Export milestone/slice results" },
@@ -514,11 +513,6 @@ export async function handleGSDCommand(args, ctx, pi) {
514
513
  await handleUndo(trimmed.replace(/^undo\s*/, "").trim(), ctx, pi, projectRoot());
515
514
  return;
516
515
  }
517
- if (trimmed === "rate" || trimmed.startsWith("rate ")) {
518
- const { handleRate } = await import("./commands-rate.js");
519
- await handleRate(trimmed.replace(/^rate\s*/, "").trim(), ctx, projectRoot());
520
- return;
521
- }
522
516
  if (trimmed.startsWith("skip ")) {
523
517
  await handleSkip(trimmed.replace(/^skip\s*/, "").trim(), ctx, projectRoot());
524
518
  return;
@@ -15,7 +15,6 @@ import { join } from "node:path";
15
15
  import { gsdRoot } from "./paths.js";
16
16
  import { parse as parseYaml } from "yaml";
17
17
  import { normalizeStringArray } from "../shared/mod.js";
18
- import { resolveProfileDefaults as _resolveProfileDefaults } from "./preferences-models.js";
19
18
  import { MODE_DEFAULTS, } from "./preferences-types.js";
20
19
  import { validatePreferences } from "./preferences-validation.js";
21
20
  import { formatSkillRef } from "./preferences-skills.js";
@@ -80,17 +79,6 @@ export function loadEffectiveGSDPreferences() {
80
79
  ...(mergedWarnings.length > 0 ? { warnings: mergedWarnings } : {}),
81
80
  };
82
81
  }
83
- // Apply token-profile defaults as the lowest-priority layer so that
84
- // `token_profile: budget` sets models and phase-skips automatically.
85
- // Explicit user preferences always override profile defaults.
86
- const profile = result.preferences.token_profile;
87
- if (profile) {
88
- const profileDefaults = _resolveProfileDefaults(profile);
89
- result = {
90
- ...result,
91
- preferences: mergePreferences(profileDefaults, result.preferences),
92
- };
93
- }
94
82
  // Apply mode defaults as the lowest-priority layer
95
83
  if (result.preferences.mode) {
96
84
  result = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsd-pi",
3
- "version": "2.35.0-dev.6179610",
3
+ "version": "2.35.0-dev.67d0e02",
4
4
  "description": "GSD — Get Shit Done coding agent",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -89,7 +89,6 @@ export function registerGSDCommand(pi: ExtensionAPI): void {
89
89
  { cmd: "triage", desc: "Manually trigger triage of pending captures" },
90
90
  { cmd: "dispatch", desc: "Dispatch a specific phase directly" },
91
91
  { cmd: "history", desc: "View execution history" },
92
- { cmd: "rate", desc: "Rate last unit's model tier (over/ok/under) — improves adaptive routing" },
93
92
  { cmd: "undo", desc: "Revert last completed unit" },
94
93
  { cmd: "skip", desc: "Prevent a unit from auto-mode dispatch" },
95
94
  { cmd: "export", desc: "Export milestone/slice results" },
@@ -567,12 +566,6 @@ export async function handleGSDCommand(
567
566
  return;
568
567
  }
569
568
 
570
- if (trimmed === "rate" || trimmed.startsWith("rate ")) {
571
- const { handleRate } = await import("./commands-rate.js");
572
- await handleRate(trimmed.replace(/^rate\s*/, "").trim(), ctx, projectRoot());
573
- return;
574
- }
575
-
576
569
  if (trimmed.startsWith("skip ")) {
577
570
  await handleSkip(trimmed.replace(/^skip\s*/, "").trim(), ctx, projectRoot());
578
571
  return;
@@ -15,10 +15,9 @@ import { homedir } from "node:os";
15
15
  import { join } from "node:path";
16
16
  import { gsdRoot } from "./paths.js";
17
17
  import { parse as parseYaml } from "yaml";
18
- import type { PostUnitHookConfig, PreDispatchHookConfig, TokenProfile } from "./types.js";
18
+ import type { PostUnitHookConfig, PreDispatchHookConfig } from "./types.js";
19
19
  import type { DynamicRoutingConfig } from "./model-router.js";
20
20
  import { normalizeStringArray } from "../shared/mod.js";
21
- import { resolveProfileDefaults as _resolveProfileDefaults } from "./preferences-models.js";
22
21
 
23
22
  import {
24
23
  MODE_DEFAULTS,
@@ -142,18 +141,6 @@ export function loadEffectiveGSDPreferences(): LoadedGSDPreferences | null {
142
141
  };
143
142
  }
144
143
 
145
- // Apply token-profile defaults as the lowest-priority layer so that
146
- // `token_profile: budget` sets models and phase-skips automatically.
147
- // Explicit user preferences always override profile defaults.
148
- const profile = result.preferences.token_profile as TokenProfile | undefined;
149
- if (profile) {
150
- const profileDefaults = _resolveProfileDefaults(profile);
151
- result = {
152
- ...result,
153
- preferences: mergePreferences(profileDefaults as GSDPreferences, result.preferences),
154
- };
155
- }
156
-
157
144
  // Apply mode defaults as the lowest-priority layer
158
145
  if (result.preferences.mode) {
159
146
  result = {
@@ -1,31 +0,0 @@
1
- /**
2
- * /gsd rate — Submit feedback on the last unit's model tier assignment.
3
- * Feeds into the adaptive routing history so future dispatches improve.
4
- */
5
- import { loadLedgerFromDisk } from "./metrics.js";
6
- import { recordFeedback, initRoutingHistory } from "./routing-history.js";
7
- const VALID_RATINGS = new Set(["over", "under", "ok"]);
8
- export async function handleRate(args, ctx, basePath) {
9
- const rating = args.trim().toLowerCase();
10
- if (!rating || !VALID_RATINGS.has(rating)) {
11
- ctx.ui.notify("Usage: /gsd rate <over|ok|under>\n" +
12
- " over — model was overpowered for that task (encourage cheaper)\n" +
13
- " ok — model was appropriate\n" +
14
- " under — model was too weak (encourage stronger)", "info");
15
- return;
16
- }
17
- const ledger = loadLedgerFromDisk(basePath);
18
- if (!ledger || ledger.units.length === 0) {
19
- ctx.ui.notify("No completed units found — nothing to rate.", "warning");
20
- return;
21
- }
22
- const lastUnit = ledger.units[ledger.units.length - 1];
23
- const tier = lastUnit.tier;
24
- if (!tier) {
25
- ctx.ui.notify("Last unit has no tier data (dynamic routing was not active). Rating skipped.", "warning");
26
- return;
27
- }
28
- initRoutingHistory(basePath);
29
- recordFeedback(lastUnit.type, lastUnit.id, tier, rating);
30
- ctx.ui.notify(`Recorded "${rating}" for ${lastUnit.type}/${lastUnit.id} at tier ${tier}.`, "info");
31
- }
@@ -1,55 +0,0 @@
1
- /**
2
- * /gsd rate — Submit feedback on the last unit's model tier assignment.
3
- * Feeds into the adaptive routing history so future dispatches improve.
4
- */
5
-
6
- import type { ExtensionCommandContext } from "@gsd/pi-coding-agent";
7
- import { loadLedgerFromDisk } from "./metrics.js";
8
- import { recordFeedback, initRoutingHistory } from "./routing-history.js";
9
- import type { ComplexityTier } from "./complexity-classifier.js";
10
-
11
- const VALID_RATINGS = new Set(["over", "under", "ok"]);
12
-
13
- export async function handleRate(
14
- args: string,
15
- ctx: ExtensionCommandContext,
16
- basePath: string,
17
- ): Promise<void> {
18
- const rating = args.trim().toLowerCase();
19
-
20
- if (!rating || !VALID_RATINGS.has(rating)) {
21
- ctx.ui.notify(
22
- "Usage: /gsd rate <over|ok|under>\n" +
23
- " over — model was overpowered for that task (encourage cheaper)\n" +
24
- " ok — model was appropriate\n" +
25
- " under — model was too weak (encourage stronger)",
26
- "info",
27
- );
28
- return;
29
- }
30
-
31
- const ledger = loadLedgerFromDisk(basePath);
32
- if (!ledger || ledger.units.length === 0) {
33
- ctx.ui.notify("No completed units found — nothing to rate.", "warning");
34
- return;
35
- }
36
-
37
- const lastUnit = ledger.units[ledger.units.length - 1];
38
- const tier = lastUnit.tier as ComplexityTier | undefined;
39
-
40
- if (!tier) {
41
- ctx.ui.notify(
42
- "Last unit has no tier data (dynamic routing was not active). Rating skipped.",
43
- "warning",
44
- );
45
- return;
46
- }
47
-
48
- initRoutingHistory(basePath);
49
- recordFeedback(lastUnit.type, lastUnit.id, tier, rating as "over" | "under" | "ok");
50
-
51
- ctx.ui.notify(
52
- `Recorded "${rating}" for ${lastUnit.type}/${lastUnit.id} at tier ${tier}.`,
53
- "info",
54
- );
55
- }